【问题标题】:The view getting loaded as separate page rather than in the kendo window after postback回发后视图作为单独的页面而不是在剑道窗口中加载
【发布时间】:2017-04-20 17:04:29
【问题描述】:

我已经实现了剑道弹出窗口并在其中加载了一个视图。当我尝试进行回发时,视图将作为单独的页面而不是在窗口中加载。我该如何解决这个问题。

获取第一次在窗口中加载视图的方法

 public ActionResult RequestStatus(int requestId, string projectName, string countryCode)
        {
            RequestStatusUpdateViewModel reqeustStatusUpdateViewModel = new RequestStatusUpdateViewModel();

            reqeustStatusUpdateViewModel.RequestID = requestId;
            reqeustStatusUpdateViewModel.ProjectName = projectName;
            reqeustStatusUpdateViewModel.CountryCode = countryCode;

            if (!ModelState.IsValid)
            {
                // return View("NewRequestView", Mapper.Map<RequestStatusViewModel>(newReqeustViewModel));
                return null;
            }
            return View("EditorTemplates/_RequestStatusView", Mapper.Map<RequestStatusUpdateViewModel>(reqeustStatusUpdateViewModel));

        }

PostMethod

   [HttpPost]
        public ActionResult RequestStatus_Update(RequestStatusUpdateViewModel requestStatusUpdateViewModel)
        {

            WorkLogViewModel workLogViewModel = new WorkLogViewModel();
            WorkLogRepository workLogRepository = new WorkLogRepository();

            workLogViewModel.WorkLogAppliesToID = 1;
            workLogViewModel.WorkLogTypeCode = "60";
            workLogViewModel.RequestID = requestStatusUpdateViewModel.RequestID;
            workLogViewModel.WorkLogSubject = "Worklog created for Request " + requestStatusUpdateViewModel.RequestID;
            workLogViewModel.WorkLogDetails = requestStatusUpdateViewModel.WorkLogDetails;
            workLogViewModel.IsActive =true;


            if (!ModelState.IsValid)
            {
                return View("_RequestStatusView", Mapper.Map<RequestStatusUpdateViewModel>(requestStatusUpdateViewModel));
            }

            requestRepository.UpdateRequestStatus(Mapper.Map<RequestStatus>(requestStatusUpdateViewModel));
            workLogRepository.CreateWorkLog(Mapper.Map<WorkLog>(workLogViewModel));
            return PartialView("EditorTemplates/_RequestStatusView", Mapper.Map<RequestStatusUpdateViewModel>(requestStatusUpdateViewModel));

        }

查看

@using System.Collections
@model CC.GRP.MCRequest.ViewModels.RequestStatusUpdateViewModel

@{
    Layout = null;
}

<style>

    .statusButtonAlign{

        margin-top:20px;
         margin-right:10px;
         float:right;
    }

     #WorkLogDetails {
        width: 100%;
    }

</style>

@using (Html.BeginForm("RequestStatus_Update", "Request", FormMethod.Post, new { id = "requestStatusform" }))
{

<div class="k-popup-edit-form k-window-content k-content" >
    <div class="k-edit-form-container">
      @Html.HiddenFor(x => x.CountryCode, new { data_bind = "value: CountryCode" })
        <div class="editor-label">
            @Html.LabelFor(model => model.RequestID)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.RequestID, new { htmlAttributes = new { @readonly = "readonly" } })
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.ProjectName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.ProjectName, new { htmlAttributes = new { @readonly = "readonly" } })
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.RequestStatus)
            </div>
        <div class="editor-field">
                @(Html.Kendo().ComboBoxFor(model => model.RequestStatusCode)

        .HtmlAttributes(new { style = "width:100%" })
        .DataTextField("Status")
        .Placeholder("Select...")
        .DataValueField("RequestStatusCode")
        .AutoBind(false)
        .Filter("contains")

        .DataSource(dataSource => dataSource

        .Read(read =>
        {
            read.Action("GetRequestStatus", "Request").Data("GetCountryCodeFilter").Type(HttpVerbs.Post);

        }).ServerFiltering(true)


           )
                )
            </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.WorkLogDetails)
        </div>

        <div class="editor-field">
            @Html.TextAreaFor(model => model.WorkLogDetails, new { htmlAttributes = new { cols = "100" } })
        </div>

        <div class="statusButtonAlign">
            <button type="submit" class="k-button k-button-icontext k-primary k-grid-update">Update</button>
            <button type="button" class="k-button k-button-icontext k-grid-cancel">Cancel</button>

        </div>

        </div>

</div>
}
<script>

</script>

【问题讨论】:

    标签: kendo-ui asp.net-mvc-5 kendo-asp.net-mvc kendo-window


    【解决方案1】:

    【讨论】:

    • 我试过这个@using (Ajax.BeginForm("RequestStatus_Update", "Request", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" })) 。它仍然在不同的页面中加载。
    • 你能告诉我我需要在 AjaxOptions 中指定什么
    • 即使我给 @using (Ajax.BeginForm("RequestStatus_Update", "Request", new AjaxOptions { HttpMethod = "POST", OnSuccess = "OnSuccess", OnFailure = "OnFailure" , }))
    • 您可以添加一个 id='statusMessage' 的 div,然后执行类似 OnSuccess(response) { $("#statusMessage").text("Status updated"); }
    • div aproch 是最好的,基本上告诉你的 ajax 用响应替换 div 的内容而不是导航
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多