该应用程序位于.Net framework 3.5和.Net framework 3.5的MVC框架2.0中。我有一个视图,其中$ .post传递参数。我还需要$ .post,将模型值传递给控制器。
在下面的视图中,如何在$ .post函数中传递模型,以便控制器获取文本框的值。我需要按钮而不是提交按钮。
观点是:
<div>
<label for ="Name"> Name</label> <%=@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; }
}
答案 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中删除双引号。让我知道它是否不起作用。