JS从文本框中抓取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为nu
本文关键字:ActionResult mvc net 参数 nu 显示 asp 文本 抓取 JS 取文本 | 更新日期: 2023-09-27 18:27:38
JS从文本框中抓取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为空
我有两个文本框,根据用户的选择由两个日期选择器填充,但尽管当我使用下面的javascript将信息传递给actionresult时,信息会从文本框中正确获取。actionresult的参数显示为null。
我该如何修复?
代码:
@Html.Label("Start", "Start Date:")
@Html.TextBox("Start", string.Empty, new {@id = "Start", @class = "datepicker"})
@Html.Label("endd", "End Date:")
@Html.TextBox("endd", string.Empty, new {@id = "End", @class = "datepicker"})
<input type="submit" value="Apply" id ="DateSelected" />
<script type="text/javascript">
$('.datepicker').datepicker();
$("#DateSelected").click(function () {
var startD = $('#Start').val().toString();
var endD = $('#End').val().toString();
$.ajax({
url: '/Docs/FirstDoc',
type: "Post",
data: { start: String.valueOf(startD), end: String.valueOf(endD) },
});
</script>
行动结果:
[HttpPost]
public ActionResult FirstDoc(string start, string end)
{
FirstDocModel firstDocModel = FirstDocHelper.RunFunction(start, end);
return PartialView(firstDocModel);
}
我是这么说的,但首先我个人觉得ajax到MVC控制器的绑定有时很痛苦。它是灵活的,但如果有什么地方不合适,你只会得到null——正如你所知。无论如何
[HttpPost]
public ActionResult FirstDoc(MyObject inputObj)
{
//use inputObj here as needed
}
然后,你需要一个MyObject的定义-使其保持简单的
public class MyObject{
string start {get;set;}
string end {get;set;}
}
如果所有的鸭子都在一排,当然包括ajax端的选项,那么对象"应该"绑定。
传递data
的方式对type: 'get'
有效,但对post
无效。试试这个:
data: JSON.stringify({ start: startD, end: endD }),