MVC 3:根据以前的选择异步加载表单字段的最常用方法是什么?

时间:2011-07-13 01:27:32

标签: c# asp.net-mvc asp.net-mvc-3 razor

想象一下,在表单上有两个列表框,其中第二个选项取决于第一个选择的内容。使用MVC3最常见或最干净的方法是什么?

2 个答案:

答案 0 :(得分:2)

我会说你需要两件事来干净利落地完成这件事。 Ajax和Json ActionResult

$('#listbox').change(function() {
  $.ajax({
    url: '/ListBoxChange',
    method: 'POST',
    data: {
      listBoxValue: 'The value'
    },
    success: function(data) {
      alert (data.Result);
    }
  });
});

行动结果:

[HttpPost]
public ActionResult ListBoxChange(string listBoxValue)
{
   string result = GetResult();
   return Json(new {
     Result = result
   });
}

答案 1 :(得分:0)

或者可以使用MVC框架,在部分刷新后直接绑定回视图。我已经使用以下内容进行复杂的动态搜索,效果很好。

<script src="<%= Url.Content("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript"></script>
 <script src="<%= Url.Content("~/Scripts/MicrosoftMvcAjax.js") %>" type="text/javascript"></script>

    <% using (Ajax.BeginForm("/GetProducts",
        new AjaxOptions()
        {
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            OnBegin = "beginSearchLoader",
            OnComplete = "completeSearchLoader",
            UpdateTargetId = "divSelectionResult"
        }
    ))
 { %>

            <div id="divSelectionResult">
                <% Html.RenderPartial(Html.ProductViewPath("ProductContainer") , Model); %>
            </div>



    public ActionResult GetProducts(FormCollection form)
    {
      //search parameters used in Form 
      ProductModel modelData = Search(form); 
      ViewData.Model = modelData; 

      //AJAX Partial View Return
      return PartialView(Constants.VIEW_FOLDER + "ProductContainer" + Constants.PARTIALVIEW_EXTENSION);
    }

仅供参考:部分代码使用自定义帮助程序等。