【问题标题】:Posting multiple values using MVC使用 MVC 发布多个值
【发布时间】:2010-11-01 12:53:47
【问题描述】:

我有一个模型,其属性指向包含 HTML 的文件。我对此模型的强类型视图使用自定义 HTML 帮助器方法来解析和返回文件中的 HTML。到目前为止效果很好。

从每个文件读取的 HTML 将包含各种控件,我需要在表单发布时检索其值。

在我的控制器方法中访问 POSTed 控件值的最佳方法是什么?

我更喜欢非 jQuery 解决方案,但我不确定 MVC 框架是否可以为我提供这些值?它能否以某种方式向控制器提供键/值对列表?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 post


    【解决方案1】:

    您可以在 ASP.NET MVC 中使用 FormCollection。

    public ActionResult SomeAction(FormCollection form) {
        ...
    }
    

    【讨论】:

    • 我错过了提及这个,因为它的工作方式与我的答案中的方法 1 非常相似。
    【解决方案2】:

    您基本上有两个选择。

    1) 像我们在 ASP.NET Web 表单中所做的那样使用老式的 Request 变量

    例如,在您的控制器操作方法中,您可以使用以下方法检索表单上存在的任何值

    public ActionResult SomeAction() {
        var request = this.ControllerContext.HttpContext.Request;
        bool boolParam = bool.Parse( request["boolParam"] ?? "false" );
    }
    

    2) 创建自定义模型绑定器,让框架将这些值打包到自定义类对象中

    这种方法一开始会有点困难,因为您必须创建一个自定义模型绑定器,但它有利于控制器代码的可读性。有关创建自定义模型绑定器的更多详细信息,请查看以下链接(您可以通过简单搜索找到更多信息)

    希望对你有帮助

    【讨论】:

    • 你绝对应该走 ModelBinder 路线 - 更易于维护,它是在 MVC 中执行此操作的地方。您基本上是在浏览表格,但至少在一个地方。
    【解决方案3】:

    HTML 文件的内容在设计时是动态的还是已知的?如果您现在知道,您可以让每个帖子都发布到它自己的操作中,然后强输入参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多