我想在按钮单击时发送一个字符串化的Json对象。我正在尝试如下操作:单击按钮时,我可以调用所需的Action方法,但是它正在传递null
参数..
MemberLogin.cshtml
<input type="button" value="» Continue" id="btnLogin" onclick="PostData();">
<script type="text/javascript">
function PostData() {
var ObjLogInDto = new Object();
ObjLogInDto.UserName = $("#txtUserName").val();
ObjLogInDto.Password = $("#txtMemberPassword").val();
ObjLogInDto.CaptchaText = $("#txtCaptcha").val();
var StringifiedData = JSON.stringify(ObjLogInDto);
$.ajax({
url: '@Url.Content("~/Member/MemberLogin/MemberLogin")',
async: false,
type: "POST",
data: StringifiedData,
dataType: "json",
contentType: "application/json; charset=utf-8",
error: function (jqXHR, textStatus, errorThrown) {
alert("ERROR:" + jqXHR + "-" + textStatus + "-" + errorThrown);
},
success: function (data, textStatus, jqXHR) {
alert("SUCCESS:" + data.Message);
}
});
}
</script>
动作方式
[HttpPost]
public ActionResult MemberLogin(string JsonStr)
{
var ObjMemberLoginDto =
new JavaScriptSerializer().Deserialize<MemberLoginDto>(JsonStr);
}
我对此一无所获JsonStr
。注意:我包含了Json2.js。StringifiedData
在ajax调用中保存字符串化数据。作为{"UserName":"TEST13361","Password":"testpswd","CaptchaText":"gz8h4"}
$ .ajax(...)配置中的'contentType'属性有问题。删除contentType以便将其设置为默认值或设置适当的内容类型。您可以在此处找到有关内容类型的更多信息
同样如@Jai所建议的那样,您需要将ajax(...)设置中的“数据”包装为具有Key的键-值对,该键-值对与操作方法的参数名相同,以进行适当的模式绑定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句