我被困在这几个星期,非常感谢任何帮助!
我正在构建一个MVC5 Web应用程序(这是我的第一个C#& ASP.NET项目)。此应用程序的模型是Web服务。有一个带有复选框的页面,当单击时,这会调用一些jQuery,它使用AJAX来调用我的一个控制器中的方法。此方法调用Web服务并更新布尔值。这一切似乎都有效...我的问题是我需要通过AJAX调用发送复选框,以便我可以更新与复选框关联的页面上的标签。
有没有更好的方法来实现这一目标? (对我来说似乎相当黑客,使用javascript来调用我的代码)。不过,我的问题是:如何通过AJAX调用传递发件人?
CSHTML页面:
@Html.CheckBox("checkbox_subscribe", new{@id = "subscribeBox"})
@Html.Label("subscribebox", "Please notify me via email of any changes in lead times.")
<script>
$(document).ready(function () {
$("#subscribeBox").change(function (event) {
$.ajax({
type: "POST",
url: "@Url.Action("SubscribeClick", "Home")",
success: function (result) {
alert(result);
}
});
});
});
</script>
控制器方法:
public string SubscribeClick(object sender, EventArgs e)
{
String flag;
if (sender == checked)
{
flag = "Y";
}
else
{
flag = "N";
}
websecurity.n_securitySoapClient proxy = new websecurity.n_securitySoapClient();
String result = proxy.setsubscribeflag("11", flag, "leadtimes");
if (result.StartsWith("<success>"))
{
if (flag == "Y") result = "Successfully subscribed for email.";
else result = "Successfully unsubscribed from email.";
}
return result;
}
只是旁注:当我尝试将发送方对象转换为CheckBox对象类型时,我收到错误:&#34; InvalidCastException未被使用代码&#34;
处理答案 0 :(得分:1)
Ajax是客户端代码,没有c#代码的概念,例如object sender, EventArgs e
。更改方法以接受boolean
[HttpPost]
public ActionResult SubscribeClick(bool isChecked)
{
if(isChecked)
{
....
}
else
{
....
}
return Json(result,
}
然后在脚本中,根据复选框的状态传递true
或false
$("#subscribeBox").change(function (event) {
var isChecked = $(this).is(':checked');
$.ajax({
type: "POST",
url: "@Url.Action("SubscribeClick", "Home")",
data: { isChecked: isChecked },
success: function (result) {
alert(result);
}
});
});