В соответствии с MSDN ActionResult используется для возврата более одного типа результата в зависимости от метода.
You decide which type of action result to return based on the task that the action method is performing.Возврат либо JSON, либо PartialView в том же методе действий
Я только начал новую работу, где их сайт MVC является настолько сложным и запутанным, что определенные изменения действительно dificult сделать, не нарушая то, что уже работает.
Мой вопрос: Использование Ajax.BeginForm, возможно ли вернуть JSON или частичный вид из одного и того же метода действий в зависимости от значения параметра?
Вот простой пример
@using (Ajax.BeginForm("AddNetworkLocationContact", "NetworkLocations", new AjaxOptions() {UpdateTargetId = "networkLocationList", OnSuccess = "onContactAddSuccess"}))
Это попадает в контроллер, который (в данный момент) имеет доступ к ViewModel собственности под названием PartialBeingCalledFrom
.
В зависимости от того, откуда он вызван (либо Guide, либо EmergencyContactsTable), я хочу, чтобы он отображал ответ JSON или ответ частичного представления. Эта строка не работает.
if(viewModel.PartialBeingCalledFrom == CallerLocation.Guide)
return PartialView("_NetworkLocationList", GetNetworkLocationsViewModel(viewModel.ClientId, "New Emergency Contact has been added"));
Эта линия делает
return Json(new
{
status = true,
updatedData = new
{
name = returnName,
number = returnListOfNumbers,
availability = viewModel.ExistingContactAvailablity,
contactId = viewModel.ExistingContactId,
docId = (string)network._id,
updatedContactsArray = (object)JsonConvert.SerializeObject(contactServices.GetContactPhoneNumberDictionary(ClientId.Value), Formatting.None)
}
вопрос я предполагаю, это с тем, что я Объявите OnSuccess
метод в моем Ajax.BeginForm
который запускается правильно, когда я возвращать данные в формате JSON. Я предполагаю, что jquery не может определить, является ли то, что получает JSON, или является представлением, и, следовательно, не знает, когда выполнить частичный вид вверх UpdateTargetId
, указанный в вышеуказанном вызове ajax. Есть ли хороший способ достичь этого типа функциональности?
Dupe, который не появился ни в одном поиске, пока я не разместил это!
ASP.NET MVC controller actions that return JSON or partial html