2013-09-08 3 views
1

- моя часть JsonResult верна? Возможно ли [HttpGet] быть ActionResult и [HttpPost] быть JsonReult? и имеют разные имена? Я думаю, что я ошибаюсь в своем контроле. Доза не работает.Может ли ActionResult как [HttpGet] и JsonReult как [HttpPost]

Mycontroller:

[HttpGet] 
    public ActionResult Customer() 
    { 
     var obj = new Project.Models.CentricModelClasses.ViewModelX(); 
     return PartialView(obj); 
    } 

    [HttpPost] 
    public JsonResult Save(ViewModelX jsonMyModel) 
    { 
     var result = true; 

     if (ModelState.IsValid) 
     { 

      result= MyClass.Insert (jsonMyModel.Address, jsonMyModel.Cod, 
       jsonMyModel.idpurchase, 
       jsonMyModel.idspend, jsonMyModel.Lname, 
       jsonMyModel.Name, jsonMyModel.Tell, jsonMyModel.username); 

     } 
     else 
     { 

     } 

     return Json(result, JsonRequestBehavior.AllowGet); 

мой класс: вид

 public class ViewModelX 
    { 
    public Nullable<long> idpurchase { get; set; } 
    public Nullable<long> idspend { get; set; } 
    public string username { get; set; } 
    public string Name { get; set; } 
    public string Lname { get; set; } 
    public string Tell { get; set; } 
    public string Address { get; set; } 
    public string CodPosti { get; set; } 

    } 

partail:

@Html.HiddenFor(m => m.username) 
    @Html.HiddenFor(m => m.Tell) 
    @Html.HiddenFor(m => m.Name) 
    @Html.HiddenFor(m => m.Mobil) 
    @Html.HiddenFor(m => m.Lname) 
    @Html.HiddenFor(m => m.id_purchase) 
    @Html.HiddenFor(m => m.id_spend) 

    <script type="text/javascript"> 

$("#submit-btn2").click(function() { saveMyModel();}); 

function SaveMyModel() 
{ 
    var e = document.getElementById("id_purchase"); 
    var str = e.options[e.selectedIndex].value; 

    var e2 = document.getElementById("id_spend"); 
    var str2 = e.options[e.selectedIndex].value; 

    $.ajax({ 
     url: '@Url.Action("Save", "Home")', 
     type: 'POST', 
     contentType: 'application/json', 
     data: JSON.stringify({ 
      jsonMyModel: { 

       username: $(".tdBuyername").val(), 
       Tell: $(".tdPhone").val(), 
       Name: $(".tdRecievername").val(), 
       Mobil: $(".tdMobile").val(), 
       Lname: $(".tdLname").val(), 

       id_purchase: $("# id_purchase ").val(str), 
       id_spend: $("# id_spend ").val(str2), 
      } 

      }) 
    }); 
} 

+0

Что вы имеете в виду «это не работает» Пожалуйста, расширить ах *, что * не работает –

+0

я имею в виду поле мое все модели проходят нулевой – niknaz

+0

Вы помечено этот вопрос с тремя.. различные версии MVC-фреймворка. Какой из них вы используете? – neontapir

ответ

0

Я думаю, что ваш вопрос селекторы Jquery вы используете. Это (username: $(".tdBuyername").val(), использует селектор класса, поэтому будет искать какие-либо элементы с классом tdBuyername Вероятно, вы на самом деле хотите, идентификатор или имя

ID -.. $("#tdBuyername").val()

Имя - $("[name=tdBuyername]").val()

Также убедитесь, имена объектов объектов JSON соответствуют модели, к которой вы пытаетесь привязаться. Например, idpurchase не будет заселен имуществом id_purchase.

Но, к другому вопросу, который вы задали, Правильно, я бы сказал, что ему нужны некоторые незначительные улучшения. Может быть, как это:

[HttpPost] 
public JsonResult Save(ViewModelX jsonMyModel) 
{ 
    var result = false; //default to false in case Model isn't valid 

    if (ModelState.IsValid) 
    { 
     result= MyClass.Insert (jsonMyModel.Address, jsonMyModel.Cod, 
      jsonMyModel.idpurchase, 
      jsonMyModel.idspend, jsonMyModel.Lname, 
      jsonMyModel.Name, jsonMyModel.Tell, jsonMyModel.username); 
    } 

    return Json(result); 
}