使用jQuery Post()将模型值传递给控制器

时间:2014-07-01 14:18:18

标签: c# jquery asp.net-mvc

该应用程序位于.Net framework 3.5和.Net framework 3.5的MVC框架2.0中。我有一个视图,其中$ .post传递参数。我还需要$ .post,将模型值传递给控制器​​。

在下面的视图中,如何在$ .post函数中传递模型,以便控制器获取文本框的值。我需要按钮而不是提交按钮。

观点是:

<div>
        <label for ="Name"> Name</label> &nbsp; <%=@Html.TextBoxFor(m => m.Name) %>
        <select id ="prod" style ="width:150px">
            <option value ="GL">GL</option>
            <option value = "Property"> Property</option>
            <option value = "Package">Package</option>
            <option value = "Island">Island</option>
        </select> 
        <input type="button" id="btnPost" value = "GetValue" />
</div>

   <script src="/Scripts/jquery-1.4.1.min.js" type ="text/javascript"></script>
    <script type ="text/javascript" >
         $(function() {
         $("#btnPost").click(function() {
        alert("here" + $("#prod").val());
        $.post("/Transfer/DisplayText", { "str1": $("#prod").val()},
           function(data) {
           alert("success");
       });
    });

});

控制器是:

[HttpPost]
    public ActionResult DisplayText(string 
       str1,TestPost_AjaxMVC.ViewModels.TransferViewModel model)
     {
        string str2 = str1;
        return View("Transfer");
     }

模型是:

 public class TransferViewModel
  {
      public string Name { get; set; }
  }

2 个答案:

答案 0 :(得分:0)

JSON.stringify模型并将其作为数据的一部分发送,让MVC使用JSON模型绑定

$(function() {
   $("#btnPost").click(function() {

    var TransferViewModel={};
    TransferViewModel.Name="SomeData";
    var postData={};
    postData.str1=$("#prod").val();
    postData.model=TransferViewModel;


   $.ajax({
       url:"/Transfer/DisplayText",
       type:"POST",
       data:JSON.stringify(postData),
       contentType:"application/json; charset=utf-8",
       success: function(){

       }
      });
   });
});

答案 1 :(得分:0)

我认为代码中的所有内容都可以,只需替换

即可
$.post

$.get 因为您从控制器返回视图也使用Url.action 如下所示,因为它可能在您发布项目时不起作用

$.get('<%=Url.Action("DisplayText","Transfer")%>', { str1: $("#prod").val()},
           function(data) {
           alert("success");
       });

你应该从str1中删除双引号。让我知道它是否不起作用。