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)
{
    ...
}