【发布时间】:2016-02-15 20:10:36
【问题描述】:
我正在创建一个 ASP.NET MVC 应用程序。我目前正在开发一个搜索页面,其中搜索框和结果表都显示在同一页面上。为此,我使用了带有视图模型的部分视图和 AJAX/JSON 调用。在文本框中输入两个搜索词后,通过ajax后在控制器中都为null。
代码如下:
视图模型:
public class ExampleViewModel
{
public string search { get; set; }
public string search2 { get; set; }
}
控制器:
[HttpPost]
public ActionResult Search(ExampleViewModel searchTerm)
{
var searchList = db.UserLists.Where(x => x.LastName.Contains(searchTerm.search));
return PartialView("_SearchResultsPartial", searchList);
}
索引视图主体:
<body>
<div>
@Html.TextBoxFor(model => model.search)
@Html.TextBoxFor(model => model.search2)
<input type="submit" value="Search" onclick="return getSearchResults()"/>
</div>
<div id="search-results">
</div>
<script>
var exViewModel = {
search: $('#search').val(),
search2: $('#search2').val()
}
function getSearchResults() {
$.ajax({
type: "POST",
data: JSON.stringify(exViewModel),
dataType: "json",
contentType: "application/json",
url : "/View/Search/",
success: function (result) {
$("#search-results").html(result);
}
});
}
</script>
同样,在 Search [POST] 方法上设置断点后,ExampleViewModel 的术语为空。
【问题讨论】:
-
除了接受的答案外,建议您只需将元素包装在
<form>并使用data: $('form').serialize(),(并删除contentType: "application/json",)
标签: javascript c# json ajax asp.net-mvc