我正在尝试获取我的 ViewModel 并将其传递给我的 Json 方法,执行如下操作:
在我看来:
<input type="button" id="suggestionBtn" title="Suggestion" onclick ="location.href='@Url.Action("GetNextAppointment", "Home", new { svm = Model })'" />
在我的 Controller 中:
public JsonResult GetNextAppointment(SuggestionViewModel svm)
{
return Json(svm, JsonRequestBehavior.AllowGet);
//this is just for testing
}
在调试时,我发现我的 svm 是空的。我尝试用字符串参数替换它,并在我的 View 中对值进行硬编码,这很有效。所以,我不太清楚问题出在哪里。
有什么想法吗?
编辑:编辑代码以使用 jQuery AJAX
我的观点现在是这样的:
@model AstellasSchedulerV2.Models.SuggestionViewModel
<div class="rightPanel">
@using (Html.BeginForm("NewAppointment", "Home", FormMethod.Post, new { @id = "form_ValidateAppointment" }))
{
@Html.Hidden("stringParam","")
<fieldset>
<div>
Patch Anti-douleur Corps @Html.CheckBoxFor(s => s.PADC, new { @class = "checkbox", @id = "chbxPADC" })
</div>
<br />
<div>
Patch Anti-douleur Pied @Html.CheckBoxFor(s => s.PADP, new { @class = "checkbox", @id = "chbxPADP" })
</div>
<br />
<a href="#" id="ClickMe">Click me</a>
</fieldset>
}
</div>
<script type ="text/javascript">
$(document).ready(function () {
$("#ClickMe").click(function () {
var o = new Object();
o.PADC = $("#chbxPADC").val();
o.PADP = $("#chbxPADP").val();
jQuery.ajax({
type: "POST",
url: "@Url.Action("GetJson")",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(o),
success: function (data) { alert(data.PADC); },
failure: function (errMsg) { alert(errMsg); }
});
});
</script>
最佳答案
这是解决方案,假设您以这种方式拥有 View 模型 -
public class SuggestionViewModel
{
public bool PADC { get; set; }
public bool PADP { get; set; }
}
然后你有一个 View 在下面的方式。这里我使用 JQuery 向 GetJson Controller Action 发出 POST 请求。我构建了一个 JavaScript 对象,然后将其序列化为 Json。然后最后将Json字符串传递给Controller Action。
<fieldset>
<div>
Patch Anti-douleur Corps @Html.CheckBoxFor(s => s.PADC, new { @class = "checkbox", @id = "chbxPADC" })
</div>
<br />
<div>
Patch Anti-douleur Pied @Html.CheckBoxFor(s => s.PADP, new { @class = "checkbox", @id = "chbxPADP" })
</div>
<br />
</fieldset>
这是 JQuery 部分 -
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function () {
$("#ClickMe").click(function () {
var chk = $('#chbxPADC').is(':checked');
var chk1 = $('#chbxPADP').is(':checked');
var o = new Object();
o.PADP = chk1;
o.PADC = chk;
jQuery.ajax({
type: "POST",
url: "@Url.Action("GetJson")",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(o),
success: function (data) { alert(data.PADP); },
failure: function (errMsg) { alert(errMsg); }
});
});
});
</script>
<a href="#" id="ClickMe">Click me</a>
当你点击按钮时,它会点击下面的 Controller -
public JsonResult GetJson(SuggestionViewModel svm)
{
return Json(svm, JsonRequestBehavior.AllowGet);
}
当您使用断点检查参数时,您将传递参数 -
作为响应,您将得到以下输出 -
关于c# - 获取 Json Controller 方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23513015/