MVC 3 - 模型绑定表中的列表,每个记录是一列而不是行

2023-12-10

我可以找到有关如何在 MVC 3 中模型绑定项目列表的各种文章,甚至可以在表中进行模型绑定,但在每个示例中,行代表列表中的一条记录。我的观点的要求是每条记录必须是一列。我无法从以下文章中获得任何技巧:

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/http://dotnetslackers.com/articles/aspnet/Understanding-ASP-NET-MVC-Model-Binding.aspx#s8-binding-with-a-list-of-class-types

这是我观点的相关部分:

    <table>
        <thead>
            <tr>
                <th>Name</th>
@foreach (var fact in Model.Facts)
{
                <th>@fact.Name</th>
}
            </tr>
        </thead>
        <tr>
            <td>Value</td>
@foreach (var fact in Model.Facts)
{
            <td>@Html.TextBox("Value" + fact.FactID.ToString(), fact.Value)</td>
}
        </tr>
        <tr>
            <td>Sample</td>
@foreach (var fact in Model.Facts)
{
            <td>@Html.TextBox("Sample" + fact.FactID.ToString(), fact.Sample)</td>
}
        </tr>
        <tr>
            <td>Default?</td>
@foreach (var fact in Model.Facts)
{
            <td>@Html.RadioButton("Default", fact.FactID, fact.Default)</td>
}
        </tr>
        <tr>
            <td></td>
@foreach (var fact in Model.Facts)
{
            <td>@Html.ActionLink("Detail", "Details", "Fact", new { id = fact.FactID }, null)</td>
}
        </tr>
    </table>

在表单的后操作方法中,我接受一个 FormCollection,我将手动从中提取数据。相反,我想接受 IList 集合并让 MVC 模型绑定程序为我解决所有问题。

这是我的控制器操作:

[HttpPost]
[Authorize]
public RedirectToRouteResult Facts(FormCollection form)
{
    int factListId = int.Parse(form["FactListID"]);
    FactList factList = Repository.Find(factListId);
    int defaultId = int.Parse(form["Default"]);
    foreach (Fact fact in factList.Facts)
    {
        string factId = fact.FactID.ToString();
        string toParse = form["Value" + factId];
        fact.Value = toParse.Length == 0 ? null : new Nullable<double>(double.Parse(toParse));
        fact.TextValue = form["Value" + factId];
        toParse = form["Sample" + factId];
        fact.Sample = toParse.Length == 0 ? null : new Nullable<int>(int.Parse(toParse));
        fact.Default = (fact.FactID == defaultId);
    }
    Repository.Save();
    return RedirectToAction("Index");
}

有人能指出我正确的方向吗?我想那里有信息,但我只是无法在大量信息中找到有关如何以更“标准”的每条记录 1 行的方式执行此操作的信息。

Thanks


如果你有一个 IList 那么做这样的事情应该可行。如果您通过数字索引生成输入,那么您就为 MVC 提供了足够的信息来将它们绑定到帖子上。

@for (int i = 0; i< Model.Facts.Count(); i++)
{
      <td>@Html.TextBoxFor(m => m.Facts[i].Value)</td>
}

<--! Do other fields the same way -->

您的控制器后操作应接受与 ViewModel 类型相同的参数。然后您应该看到 Facts IList 已正确绑定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC 3 - 模型绑定表中的列表,每个记录是一列而不是行 的相关文章

  • 为什么 Html.Label() 不适用于句点?

    我使用 Html Label strings 输出一些字符串 当我向它传递一个带有句点的值时 它只输出空格 Html Label 公司 e g 公司是一个动态值 如果值为 Bill Co 则有效 但如果为 Bill Co 则无效 唯一的区别
  • 如何为Data-First自动创建的实体添加数据注释?

    如果模型优先 我们使用 MetadataType typeof ConceptMetadataSource 附加一个包含所有数据注释的 MetadataSource 文件 例如 HiddenInput DisplayValue false
  • 在 MVC 中重用 WPF ViewModel 是否可行?

    我们有一个用 WPF WCF 编写的富客户端应用程序 并打算在 ASP net 中创建一个配套网站 如果可能 使用 MVC 我被要求弄清楚我们当前的代码库中有多少是可以重用的 由一个单独的团队 而且我对 ASP net 几乎没有经验 我们将
  • 如何选择性地呈现 ASP.Net MVC 3 中的某个部分?

    在我的网站上 我有一个部分 浮动侧边栏 我只想为一部分用户 管理员 呈现该部分 我希望我可以将逻辑放入主布局中 以确定是否应显示该部分 但如果未呈现该部分 则会导致页面上出现错误 示例代码 Layout cshtml code if use
  • 在 C# 中使用逗号和小数格式化数字

    我需要显示一个带有逗号和小数点的数字 例如 情况 1 十进制数是 432324 没有逗号或小数点 需要将其显示为 432 324 00 不 432 324 情况 2 十进制数是 2222222 22 没有逗号 需要将其显示为 2 222 2
  • ASP.NET MVC - 路由 - 具有文件扩展名的操作

    有没有办法实现调用URLhttp mywebsite myarea mycontroller myaction xml这基本上是 假 请求文件 但结果将是一个为动态创建的文件提供服务的操作操作 我试过这个 context MapRoute
  • 自定义 ViewEngine ASP.NET MVC 3

    我正在为 ASP NET MVC 的自定义视图引擎寻找最简单的解决方案 这样我就可以超越路径来寻找视图 实际上 我正在尝试在我的解决方案中构建一个主题系统 我查看了网络 但发现了很难学习和实施的解决方案 Thanks 这就是我用的 它在主题
  • 如何测试 PARTIAL 视图在 C# ASP .NET MVC 中呈现

    我有一个视图 它内部有部分视图渲染 div class partialViewDiv Html RenderPartial partial Model SomeModelProperty div 和一个返回此视图的控制器 public Ac
  • 在Application_Start中访问ninject内核

    我正在使用 Ninject 和随 nuget 安装的 MVC3 扩展 我的内核设置代码位于 App Start NinjectMVC3 cs 文件中 控制器中的一切都运行良好 但我无法弄清楚如何 正确 绑定 Global asax cs M
  • ASP.NET MVC - 授权属性登录重定向后保留 POST 数据

    我有一个带有评论的博客文章页面 任何用户 无论是否登录 都可以在页面底部看到一个表单来发表评论 当用户输入评论且未获得授权时 用户将被重定向到登录 注册页面 登录后 用户将被重定向回操作 但包含评论正文的 POST 数据会丢失 我使用 AS
  • 从 MVC 视图中的模型访问 displayName 属性

    如果我的模型有 DisplayName First Name public string firstName get set 然后我可以用 LabelFor 在视图中打印它 Html LabelFor model gt model acc
  • MVC3 DropDownList + JSON + 选定问题

    我的网站 MVC3 JQuery 及其移动版本 MVC3 JQuery mobile 之间有一个非常奇怪的行为 它们分为两个不同的解决方案 我正在使用以下代码根据另一个下拉列表 搜索值 更改下拉列表的内容 搜索值 Razor Html Dr
  • MVC3 和实体框架

    我的问题很简单 将 edmxMVC3 项目的 Web 应用程序的模型文件夹中的文件吗 我的答案非常简单 不要用数据访问逻辑和数据建模搞乱表示层 整个 MVC 应用程序 Visual Studio 解决方案中从下到上至少有 4 个项目 1 P
  • System.Web.Mvc.HtmlHelper 不包含以下定义

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 关于编辑可变长度列
  • ASP.NET MVC4 CustomErrors DefaultRedirect 被忽略

    我有一个 MVC 4 应用程序 使用自定义 HandleErrorAttribute 仅处理自定义异常 我想拦截默认的 404 和其他非 500 错误页面 并用更有吸引力的内容替换它们 为此 我将以下内容添加到我的 Web config 中
  • ASP.NET MVC 3 Razor DisplayFor 委托

    我收到此错误 模板只能与字段访问 属性访问 一维数组索引或单参数自定义索引器表达式一起使用 这是我的代码 自定义 HTML 帮助程序 包装 DisplayFor 以便我可以选择模板 public static string DisplayL
  • ModelBinding asp.net MVC 列表

    我有以下课程 public class Movie string Name get set string Director get set IList
  • 目标中的 clr.dll 版本与构建的 mscordacwks.dll 版本不匹配

    我正在使用 NET Framework 4 0 开发 ASP NET MVC 3 应用程序 当我去调试我的应用程序时 我收到消息 无法附加到应用程序 webdev webserver 目标中的 clr dll 版本与构建 mcordacwk
  • If else 在 Web 网格列中

    如何在 webgrid 列中添加条件 if else grid GetHtml tableStyle table table bordered columns grid Columns grid Column RealName Name g
  • 如何告诉 razor 不要 html 转义

    我在一个项目中使用 asp net mvc 3 和 razor 在某些情况下 我需要从控制器序列化数组 将其放入视图数据中并将其分配给 js 对象 但是当我使用它输出时 ViewData some array 结果是 html 转义所以我得

随机推荐