2014-10-15 2 views
0

Здесь я задал несколько вопросов без каких-либо обоснованных ответов. Возможно, я ошибся или попросил все неправильно. В общем, что я пытаюсь сделать, это загрузить в УАК на странице:Публикация на контроллер в MVC4

var testModel = @Html.Raw(JSON.Encode(Model)) 

Затем манипулировать свойствами TestModel, которые отражают оригинальную модель, с JQuery и JavaScript, а затем отправить его обратно к методу контроллера с запрос AJAX:

$.ajax({ 
    datatype: 'json', 
    data: testModel // ?? or some other way? 
    // etc 
}); 

контроллер:

public ActionResult PostModel (ModelName model) // or JsonResult 
{ 
    //do things 
    return Json(model); // or return View? 
} 

Любая помощь будет оценена.

Я пробовал то, что предложили другие, и, тем не менее, транзакция никогда не доходит до метода контроллера. Почему нет?

+0

Можете ли вы добавить код настройки маршрута, который имеет отношение к действию? – elolos

ответ

0

Вот что я сделал, чтобы сделать этот подход работы:

На странице (.cshtml):

function SendJsonData() { 
    localModel.itemNumber = $("#txtItemNumber").val(); 
    // etc for the rest of the fields 
    $.ajax({ 
     url: '@Url.Action("PostModel", "ItemControl")', 
     data: JSON.stringify(localModel), 
     dataType: 'json', 
     cache: false, 
     type: 'POST', 
     contentType: 'application/json, charset=utf-8', 
     success: function(data) { 
      //do stuff 
     }, 
     error: function() { 
      alert('error'); 
     } 
     }); 

Тогда в контроллере:

 [HttpPost] 
     public JsonResult PostModel(ItemModel localModel) 
     { 
      //do stuff with data model 
      return Json(localModel); 
     } 

Это сработало хорошо и, похоже, я считаю, t с использованием MVC4 и выше. Таким образом, вся модель находится на странице и может быть легко обработана с помощью jQuery и JavaScript, а затем отправляется на контроллер для обработки. Это может быть даже большая сложная модель, я пробовал ее. Нет больше сообщений и фликер страницы и переписывание ...

0

type представляет тип запроса, который вы делаете не тип данных, которые вы собираетесь вернуть. dataType - то, что вы должны были там и POST в поле .

$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    data: testModel // ?? or some other way? 
    // etc 
}); 
1

типа Ajax Определяет тип запроса. (GET или POST) DETAILS

$.ajax({ 
    type: 'POST',//or GET 
    dataType: 'json', 
    data: testModel // ?? or some other way? 
    // etc 
}); 
0

В основном вы отправляете данные через JavaScript, так на успех вам нужен объект JSON для синтаксического анализа так что вам нужно return Json(model):

public ActionResult PostModel (ModelName model) // or JsonResult 
{ 
    //do things 
    return Json(model); 
} 

и ваш JS as:

$.ajax({ 
    type: 'POST', 
      url: '{somecontroller}/{someaction}', 
      cache: false, 
      contentType: 'application/json; charset=utf-8', 
      data:testModel, 
      success: function (object) { 
       $.each(object, function (key, val) { 
        //do your stuff here 
       }) 
     }) 

Где key будет вашим Model Propertyname и вал будет его значение соответственно


Теперь, чтобы удалить ваше замешательство «Когда возвращаться View?» Существует три способа передачи информации с контроллера на представление в ASP.NET MVC. Мы используем Html помощников для создания HTML полей и связать их с моделями для Get/Post значения данных с целью контроллер

  • Как сильно типизированных модели объекта.(Для конкретной модели)
  • В качестве динамического типа (с использованием @model динамических)
  • Использование ViewBag

Теперь, когда вы используете HTML хелперы вы можете вернуться вид с объектной моделью прошел с ним, которая будет автоматически заполнять данные на ваш взгляд, как:

Сильно напечатал модель объекта

<%@ Page Title="#" Language="VB" MasterPageFile="#" Inherits="System.Web.Mvc.ViewPage(Of somemodel)" %> 

Рендер вид в

Return View("your View Path", modelObject) 
+0

Я пробовал это так, и транзакция никогда не доходит до контроллера. –

+0

вы отлаживали свой код? Можете ли вы дать мне ошибку, если вы ее получите? – Tushar

+0

Метод ajax просто не доходит до метода контроллера и ошибок. –

Смежные вопросы