FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 5553|回复: 7
打印 上一主题 下一主题

【已确认】MVC获取CheckBoxList的值(这个简单的不要不要...)

[复制链接]
跳转到指定楼层
楼主
发表于 2017-1-21 16:53:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
@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')"))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2017-1-21 17:59:56 | 只看该作者
这个简单的不要不要..........

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)


即可:






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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
板凳
 楼主| 发表于 2017-1-21 20:46:34 | 只看该作者
谢谢三师兄
地板
 楼主| 发表于 2017-1-21 22:42:24 | 只看该作者
哈哈,我也有代码贡献了
5#
发表于 2017-1-21 23:07:12 | 只看该作者
学习进行中!谢谢!
6#
 楼主| 发表于 2017-1-21 23:40:12 | 只看该作者
sanshi 发表于 2017-1-21 17:59
这个简单的不要不要..........

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

三师兄,把CheckBoxList的例子加个这样的,你以前的例子把我搞混了
7#
 楼主| 发表于 2017-1-21 23:40:28 | 只看该作者
sanshi 发表于 2017-1-21 17:59
这个简单的不要不要..........

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

三师兄,把CheckBoxList的例子加个这样的,你以前的例子把我搞混了
8#
发表于 2017-1-22 09:55:02 | 只看该作者
capfhz 发表于 2017-1-21 23:40
三师兄,把CheckBoxList的例子加个这样的,你以前的例子把我搞混了

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

你说的这个也有例子:http://fineui.com/demo_mvc/#/demo_mvc/DataModel/CheckBoxList
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-22 04:47 , Processed in 0.047170 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表