FineUI 官方论坛

标题: 【已确认】MVC获取CheckBoxList的值(这个简单的不要不要...) [打印本页]

作者: capfhz    时间: 2017-1-21 16:53
标题: 【已确认】MVC获取CheckBoxList的值(这个简单的不要不要...)
@model FineUIMvc.QuickStart.Models.Sys_Menu

@{
    ViewBag.Title = "Edit";
    var F = @Html.F();
}

@section body {

    @(F.Panel()
        .ID("Panel1")
        .ShowBorder(false)
        .ShowHeader(false)
        .BodyPadding(10)
        .AutoScroll(true)
        .IsViewPort(true)
        .Layout(LayoutType.VBox)
        .Toolbars(
            F.Toolbar()
            .Position(ToolbarPosition.Bottom)
                .Items(
                   F.ToolbarFill(),
                    F.Button()
                        .ValidateForms("SimpleForm1")
                        .Icon(Icon.SystemSaveClose)
                        .OnClick(Url.Action("Edit"), "SimpleForm1")
                        .Text("保存后关闭"),
                     F.ToolbarSeparator(),
                    F.Button()
                        .Icon(Icon.SystemClose)
                        .Text("关闭")
                        .Listener("click", "F.activeWindow.hide();")
                )
        )
        .Items(
                 F.GroupPanel().ID("GroupPanel1").Title("基础信息")
                 .Items(
                     F.SimpleForm()
                        .ID("SimpleForm1")
                        .ShowBorder(false)
                        .ShowHeader(false)
                        .BodyPadding(5)
                        .LabelAlign(LabelAlign.Right)
                        .LabelWidth(120)
                        .Items(
                            F.HiddenFieldFor(m => m.ID),
                            F.DropDownListFor(m => m.ParentID)
                            .EnableSimulateTree(true)
                             .DataTextField("Name").DataValueField("ID")
                             .DataSimulateTreeLevelField("TreeLevel")
                             .DataEnableSelectField("Enabled")
                             .DataSource(ViewBag.ParentID),
                            F.TextBoxFor(m => m.Name),
                            F.TextBoxFor(m => m.NavigateUrl),
                            F.NumberBoxFor(m => m.StorIndex),
                            F.TriggerBoxFor(m => m.ImageUrl)
                             .TriggerIcon(TriggerIcon.Search)
                             .EnableEdit(false)
                             .OnTriggerClick(Url.Action("TriggerBox_Click"), new Parameter("ActionIcon", "this.getValue()")),
                            F.TextAreaFor(m => m.Remark).Height(50)
                            )
                     ),
                     F.GroupPanel().ID("GroupPanel2").Title("菜单权限").Items(
                         F.CheckBoxList()
                            .ID("CheckBoxList1")
                            .ShowEmptyLabel(true)
                            .ColumnNumber(5)
                            .DataTextField("Text")
                            .DataSource(ViewBag.CheckList)
                         )
                       )
    )
    @(F.Window()
        .ID("winSelectedIcon")
        .Title("选择图标")
        .BodyPadding(10)
        .IsModal(true)
        .Hidden(true)
        .Target(Target.Top)
        .Width(450)
        .Height(300)
        .EnableIFrame(true).
        OnClose(Url.Action("Windows1_Close"))

    )


}

在后台的只存按钮中,已传入 .OnClick(Url.Action("Edit"), "SimpleForm1"),我在例子中看到的是.OnClick(Url.Action("btnCheckedItemsList_Click"),
                    new Parameter("name", "列表一", ParameterMode.String),                    new Parameter("selected", "getCheckBoxListSelected('CheckBoxList1')"))


作者: sanshi    时间: 2017-1-21 17:59
这个简单的不要不要..........

FineUIMvc提供了非常方便的手段向后台传递值,把你代码中的:
.OnClick(Url.Action("Edit"), "SimpleForm1")
改为:
.OnClick(Url.Action("Edit"), "Panel1")
这样,后台就能获取 Panel1 中的所有 FineUIMvc 控件的值,而你的页面层次结构是这样的:
Panel1
---->GroupPanel1
---->---->SimpleForm1
---->GroupPanel2
---->---->CheckBoxList1


把你的后台代码:
public ActionResult Edit(Sys_Menu sys_Menu, FormCollection values)

改为:
public ActionResult Edit(Sys_Menu sys_Menu, FormCollection values, string[] CheckBoxList1)


即可:

[attach]9724[/attach]

[attach]9725[/attach]


===
同时修正你代码中的一个BUG:
F.CheckBoxListFor(m=>m.MenuAction)
        .ID("CheckBoxList1")
        .ShowEmptyLabel(true)
        .ColumnNumber(5)
        .DataTextField("Text")
        .DataValueField("Value")
        .DataSource(ViewBag.CheckList)
)

注意:你忘记添加 DataValueField("Value") 了

作者: capfhz    时间: 2017-1-21 20:46
谢谢三师兄
作者: capfhz    时间: 2017-1-21 22:42
哈哈,我也有代码贡献了
作者: erp8@live.cn    时间: 2017-1-21 23:07
学习进行中!谢谢!
作者: capfhz    时间: 2017-1-21 23:40
sanshi 发表于 2017-1-21 17:59
这个简单的不要不要..........

FineUIMvc提供了非常方便的手段向后台传递值,把你代码中的:

三师兄,把CheckBoxList的例子加个这样的,你以前的例子把我搞混了
作者: capfhz    时间: 2017-1-21 23:40
sanshi 发表于 2017-1-21 17:59
这个简单的不要不要..........

FineUIMvc提供了非常方便的手段向后台传递值,把你代码中的:

三师兄,把CheckBoxList的例子加个这样的,你以前的例子把我搞混了
作者: sanshi    时间: 2017-1-22 09:55
capfhz 发表于 2017-1-21 23:40
三师兄,把CheckBoxList的例子加个这样的,你以前的例子把我搞混了

通过 new Parameter("name".... 指定参数更灵活,可以向后台传递任意数据。

你说的这个也有例子:http://fineui.com/demo_mvc/#/demo_mvc/DataModel/CheckBoxList




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4