MVC 3: Каков наиболее распространенный способ асинхронной загрузки полей формы на основе предыдущих вариантов? - PullRequest
4 голосов
/ 13 июля 2011

Представьте себе, что в форме есть два списка, где выбор во втором зависит от того, что было выбрано в первом.Какой самый распространенный или самый чистый способ сделать это с MVC3?

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Я бы сказал, что вам понадобятся две вещи, чтобы выполнить это чисто;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
   });
}
0 голосов
/ 13 июля 2011

В качестве альтернативы можно использовать 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);
    }

К вашему сведению: в коде используются пользовательские помощники и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...