Jquery 选中复选框后更改视图
我的观点是改变内容而不改变整体观点, (更改视图的一部分) 这是我的密码: 型号: 控制器:Jquery 选中复选框后更改视图,jquery,asp.net-mvc-3,checkbox,Jquery,Asp.net Mvc 3,Checkbox,我的观点是改变内容而不改变整体观点, (更改视图的一部分) 这是我的密码: 型号: 控制器: public ActionResult PartialDemo(字符串数据) { 列表显示=新列表(); if(Request.IsAjaxRequest()) { 如果(数据==“1”) { 显示。添加(新的显示数据(3)); 显示。添加(新的显示数据(4)); } 其他的 { 显示。添加(新的显示数据(5)); 显示。添加(新的显示数据(6)); } 返回PartialView(“PartialD
public ActionResult PartialDemo(字符串数据)
{
列表显示=新列表();
if(Request.IsAjaxRequest())
{
如果(数据==“1”)
{
显示。添加(新的显示数据(3));
显示。添加(新的显示数据(4));
}
其他的
{
显示。添加(新的显示数据(5));
显示。添加(新的显示数据(6));
}
返回PartialView(“PartialDemoUC”,显示);
}
其他的
{
显示。添加(新的显示数据(1));
显示。添加(新的显示数据(2));
返回视图(“PartialDemo”,显示);
}
}
PartialDemoUC.cshtml
@model IEnumerable
@foreach(模型中的var项目)
{
@items.ID
}
PartialDemo.cshtml:
@model IEnumerable
@{
ViewBag.Title=“PartialDemo”;
}
@ActionLink(“**Link_1**”,“PartialDemo”,“PartialDemo”,new{Data=“1”},new AjaxOptions{UpdateTargetId=“rsvpmsg”})
@ActionLink(“**Link_2**”,“PartialDemo”,“PartialDemo”,new{Data=“2”},new AjaxOptions{UpdateTargetId=“rsvpmsg”})
@{Html.RenderPartial(“PartialDemoUC”,this.Model);}
我将通过一个复选框更改Link\u 1
和Link\u 2
:
如果选中chechbox
,就像点击了链接一样
我该怎么做
很抱歉我的英语不好。您可以使用标准复选框:
@model IEnumerable<AppTwitter.Models.DisplayData>
@{
ViewBag.Title = "PartialDemo";
}
<div data-url="@Url.Action("PartialDemo", "PartialDemo")" id="checkboxes">
@Html.CheckBox("Data1", new { data_value = "1" })
@Html.CheckBox("Data2", new { data_value = "2" })
</div>
<div id="rsvpmsg">
@{Html.RenderPartial("PartialDemoUC", this.Model);}
</div>
现在,控制器操作可以采用2个参数,这将允许您除了知道单击了哪个复选框外,还可以知道其值是否已选中,因为与链接相反,复选框可以有2种可能的状态:
public ActionResult PartialDemo(string data, bool isChecked)
{
...
}
哦,如果不再使用
ajax.*
助手,您就不再需要jquery.unobtrusive ajax.min.js
脚本了。如果取消选中复选框,会发生什么?是否与单击链接时相同?您是否需要区分您的PartialDemo操作中是否选中了复选框?如果没有,为什么要使用复选框?@Darin Dimitrov如果未选中复选框,则相同如果未单击链接,则是,我想区分是否在我的PartialDemo操作中选中了复选框,谢天谢地,达林你似乎自相矛盾:你是说你想区分是否在PartialDemo操作中选中了复选框,另一方面,你说如果复选框未选中,则在未单击链接时相同。但是,如果未单击链接,则根本不会发送AJAX请求,甚至不会调用控制器操作。那么是哪一个呢。我发布了一个答案,其中始终发送AJAX请求,并将isChecked值作为附加参数传递。如果在这种情况下您不需要AJAX请求,那么您必须修改我的代码。@Darin Dimitrov您的代码对我非常有用,如果选中了chexbox,我希望发送AJAX请求,我如何更新您的代码感谢DarinWrap将AJAX调用封装在If
条件中:If(isChecked){$.AJAX(…);}
。
@model IEnumerable<dynamic>
@foreach(var items in Model)
{
@items.ID
}
@model IEnumerable<AppTwitter.Models.DisplayData>
@{
ViewBag.Title = "PartialDemo";
}
<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"> </script>
@Ajax.ActionLink("**Link_1**", "PartialDemo", "PartialDemo", new {Data= "1" }, new AjaxOptions { UpdateTargetId = "rsvpmsg" })
@Ajax.ActionLink("**Link_2**", "PartialDemo", "PartialDemo", new {Data= "2" }, new AjaxOptions { UpdateTargetId = "rsvpmsg" })
<div id="rsvpmsg">
@{ Html.RenderPartial("PartialDemoUC", this.Model);}
</div>
@model IEnumerable<AppTwitter.Models.DisplayData>
@{
ViewBag.Title = "PartialDemo";
}
<div data-url="@Url.Action("PartialDemo", "PartialDemo")" id="checkboxes">
@Html.CheckBox("Data1", new { data_value = "1" })
@Html.CheckBox("Data2", new { data_value = "2" })
</div>
<div id="rsvpmsg">
@{Html.RenderPartial("PartialDemoUC", this.Model);}
</div>
$(function () {
$('#checkboxes :checkbox').change(function () {
var value = $(this).data('value');
var isChecked = $(this).is(':checked');
var url = $('#checkboxes').data('url');
$.ajax({
url: url,
type: 'POST',
data: { data: value, isChecked: isChecked },
success: function (result) {
$('#rsvpmsg').html(result);
}
});
});
});
public ActionResult PartialDemo(string data, bool isChecked)
{
...
}