【发布时间】:2015-07-06 11:15:51
【问题描述】:
我已经坚持了几个星期,非常感谢任何帮助!
我正在构建一个 MVC5 Web 应用程序(这是我的第一个 C# 和 ASP.NET 项目)。此应用程序的模型是 Web 服务。有一个带有复选框的页面,单击时会调用一些 jQuery,该 jQuery 使用 AJAX 调用我的一个控制器中的方法。此方法调用 Web 服务并更新布尔值。这一切似乎都在工作......我的问题是我需要通过 AJAX 调用发送复选框,以便我可以更新与复选框关联的页面上的标签。
有没有更好的方法来做到这一点? (对我来说,使用 javascript 调用我的代码似乎相当 hack-ish)。不过,我的问题是:如何通过 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 对象类型时,我收到错误消息:“InvalidCastException 未被使用代码处理”
【问题讨论】:
-
代码有助于确定您的问题
-
@Pseudonym 我刚刚添加了所有相关代码
-
那么你有正确触发事件并且正确发送和接收值吗?如果这两个问题的答案都是肯定的,那么我认为您执行此操作的方式没有问题。您可以深入研究 mvc 并为更复杂的对象做一些模型绑定......但对于一个简单的复选框,这没什么大不了的
-
(object sender, EventArgs e)?这是 MVC 还是网络表单?如果要将数据传递给控制器,请使用 ajax 的data选项 - 例如data: { isSubscibed: true },并创建方法public ActionResult SubscribeClick(bool isSubscibed) -
@StephenMuecke 我什至没有想过尝试这个,但它现在成功了!如果你能用这些信息写一个答案,我很乐意接受。谢谢楼主!
标签: c# ajax web-services razor asp.net-mvc-5