在部分视图刷新后更新模式数据

时间:2019-01-30 15:32:53

标签: c# asp.net-mvc model-view-controller

我在主视图中有一个选择框。该视图具有局部视图。 当该选择框上的值更改时,我想重新加载局部视图(使用模型中的一些新数据)并使用该新数据更新模式内容。

我可以成功重新加载部分视图,我的问题是模态更新的最佳方法是什么?

我看到的选项:

  • 在主视图中定义模态,但不知道如何访问传递到局部视图的模型中的数据;
  • 在局部视图中定义模态,但这是一个好习惯吗?
  • 将包含所有信息的模型传递到主视图,但是通过这种方式,当选择框上的值更改时,我需要刷新所有视图,而我只希望重新加载部分视图。

1 个答案:

答案 0 :(得分:0)

我从您的问题中了解到的是,您有一个主视图,该主视图具有一个SelectList控件,可用于选择更改,该SelectList您要更新部分视图(部分视图)的SelectList,对于您正在使用的那部分部分视图。如果是这种情况,请执行以下步骤,希望这将有助于您完成任务:

步骤:1: 可以说这是您的主要观点 [MainView.cshtml]

@model yourProjectNameSpace.SomeModel

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>@ViewBag.Title</h2>

<select id='yourSelectList'>
  <option value="1">Option One</option>
  <option value="2">Option two</option>
</select>

<div id="PartialAreaToUpdate">
    @Html.Partial("_YourPartialView", Model)
</div>

@section scripts
{
<script>
        $('#yourSelectList').change(function () {
            var selectedvalue = $(this).val();
            if (!selectedvalue ) {
                return;
            }
            $.ajax({
                type: 'POST',
                url: '@Url.Action("GetYourUpdatedPartial", "YourControllerName")',
                data: { selectedvalue: selectedvalue},
                success: function (response) {
                     $('#PartialAreaToUpdate').html('');
                     $('#PartialAreaToUpdate').html(response);
                }
            });
        });
</script>
}

step.2:您的控制器代码如下

    public class YourControllerNameController : Controller
    {
        public ActionResult GetYourUpdatedPartial(string selectedvalue)
        {
            var model = getUpdtedDataFromYOurStor(selectedValue);
            return View("_YourPartialView", model);
        }
    }

步骤。 3:最后 您的局部视图[_YourPartialView.cshtml]

@model yourModel

your logic of rendering data will go here