关闭弹出窗口Windows MVC控制器

本文关键字:Windows MVC 控制器 窗口 | 更新日期: 2023-09-27 18:14:18

当点击屏幕上的链接时,我有一个弹出窗口打开,该视图有链接是_DetailsSurvey。点击链接后,弹出窗口打开,显示_EditSurvey视图的内容。在_EditSurvey的末尾,我有一个按钮

<input type="submit" value="Save" />

我正在使用Ajax选项,如果模型状态有效,单击按钮后,我将一行插入Survey表。

 @using (Ajax.BeginForm("SubmitSurvey", "Blog", null, new AjaxOptions
    {
    UpdateTargetId = "context",
    InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace,
    HttpMethod = "Post",
    Url = "/Home/SubmitSurvey"
    },
    new { surveyItem = @Model }))

我想做的是,如果从SubmitSurvey方法返回后模型状态是有效的,我想要关闭弹出窗口。我使用以下方法来实现这一点,但它不起作用。

    Employee employee;
    if (ModelState.IsValid)
    {
        int employeeId = surveyItem.EmployeeId;
        int trainingId = surveyItem.TrainingId;
        employee = _work.EmployeeRepository.GetSet().
        FirstOrDefault(a => a.Id == employeeId);

        var training = _work.TrainingRepository.GetSet().Where(a => a.EmployeeId == employeeId && a.Id == trainingId).ToList().ElementAt(0);
        training.Survey = surveyItem.survey;
        training.SurveyId = surveyItem.survey.Id;
       /* _work.SurveyRepository.Add(surveyItem.survey);
        _work.SurveyRepository.Save();*/
        _work.TrainingRepository.UpdateAndSave(training);
        _work.TrainingRepository.Save();
    }
    else
    {
        return PartialView("_EditSurvey", surveyItem);
    }
    return JavaScript("window.close()");

我创建我的弹出式链接如下

 <tr>
    <td class="view_detail_label">
        Eğitim Adı
    </td>
        <td>
           @Html.ActionLink(
           training.Name.Name, 
           "AddSurvey", 
           new { 
               employeeId = Model.Id, 
               trainingId = training.Id 
           },
           new {
               @class = "addSurvey"
           }
       )
         <div class="result" style="display:none;"></div>             
        </td>            
    </tr>

调用的ajax代码如下:

 $(document).ready(function () {
    $('.addSurvey').click(function () {
        $.ajax({
            url: this.href,
            type: 'GET',
            cache: false,
            context: this,
            success: function (result) {
                $(this).next('.result').html(result).dialog({
                    autoOpen: true,
                    title: 'Anket',
                    width: 500,
                    height: 'auto',
                    modal: true
                });
            }
        });
        return false;
    });
});

在我的弹出视图中,我使用前面显示的Ajax BeginForm,下面是用户输入调查值的表。最后我有一个提交按钮。

<table id="context">
<tr>
    <td>
        <div class="editor-label">
            @Html.LabelFor(model => model.survey.Context)
        </div>
    </td>
    <td>
        <div class="editor-field">
            @Html.EditorFor(model => model.survey.Context)
            @Html.ValidationMessageFor(model => model.survey.Context)
        </div>
    </td>
   </tr>
 <tr>
        <td>
            <input type="submit" value="Kaydet" />
            </td>
    </tr>

如果提供的输入有任何问题,我将在每个字段旁边显示验证消息。如果模型是有效的,我想做要么关闭弹出窗口。

关闭弹出窗口Windows MVC控制器

打开一个弹出窗口是一个非常糟糕的主意,有很多原因我不会在这里解释。我花了很长时间来寻找一个我认为对我来说完美的解决方案。

在我的例子中,我将视图准备为局部视图(没有html、header和body)。只有必要的项才能在div中创建我的功能。

然后我请求我的部分视图使用ajax查询后,我用我的部分视图字符串提供一个div和我应用JQuery对话框方法的div为我的视图显示为一个浮动对话框,我绑定OK按钮到ajax post发送数据到服务器。如果您想让不引人注目的验证工作,您必须使用验证器解析表单。

我邀请你来看看我的框架,你需要的一切都是可用的。

https://myprettycms.codeplex.com/SourceControl/latest 461106