我可以将ActionResult作为[HttpGet]和JsonReult作为[HttpPost]

时间:2013-09-08 18:16:56

标签: asp.net-mvc asp.net-mvc-4

我的JsonResult Part是真的吗? 可能[HttpGet]是ActionResult而[HttpPost]是JsonReult吗?并有不同的名字?  我认为我的控制器出错了。但这不起作用。

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; }

    }

部分观点:

    @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),
            }

            })
    });
}

1 个答案:

答案 0 :(得分:0)

我认为你的问题是你正在使用的jQuery选择器。这个(username: $(".tdBuyername").val(),正在使用类选择器,因此会查找类为tdBuyername的任何元素。可能你真的想要id或name。

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

名称 - $("[name=tdBuyername]").val()

还要确保yor JSON对象的属性名与您尝试绑定的模型匹配。例如{@ 1}}将不会被回发的属性idpurchase填充。

但是,对于你问的另一个问题,关于你的保存方法是否正确,我会说它需要一些小的改进。也许是这样的:

id_purchase