【问题标题】:How to pass data from razor view to controller in mvc3?如何将数据从剃刀视图传递到 mvc3 中的控制器?
【发布时间】:2011-12-11 02:37:21
【问题描述】:

我有一个模型,用于将数据从我的视图传递到我的控制器,但我有一些未绑定的文本框和下拉列表。如何使用 ViewData 或 ViewBag....或其他东西将未绑定的数据从我的视图传递回我的控制器。谢谢!

【问题讨论】:

  • 什么意思?请告诉我们你想做什么。
  • “传递未绑定的数据”是什么意思

标签: asp.net-mvc-3 razor


【解决方案1】:

你能举个例子吗?看起来好像你在混淆你的术语。除了通过POST/GET 之外,您通常不会将数据从视图传递到控制器。我假设这就是你的意思。您可以通过具有相同名称的参数或使用FormCollection 将任何数据获取到控制器的操作方法中。

public ActionResult SomeMethod(
                       string yourUnboundTextBoxName, 
                       FormCollection colleciton) { }

在您看来,它可能类似于:

<div>
    <input type='text' name='yourUnboundTextBoxName' />
</div>

MVC 将自动获取yourUnboundTextBoxName 的值并将该值插入到同名参数中。或者您可以使用FormCollection 并从那里获取值。 FormCollection["yourUnboundTextBoxName"]

【讨论】:

  • 您的回答为我想要/需要做的事情指引了正确的方向。结合这个答案stackoverflow.com/q/2408043/114029,我能够将隐藏的输入值回发到控制器操作方法到未绑定的 List。伟大的! :-) 我现在不能投票给你的答案,因为我今天没有更多的投票了。我会让 Firefox 标签页再打开 4 个小时,这样我就可以投票给你了... =]
【解决方案2】:

您不能使用 ViewBag 将数据从视图传递到控制器。视图(或至少从视图生成的 HTML)可以使用表单将数据发送回控制器,默认绑定器允许您将对象作为参数提供给控制器的方法。

如果您需要大量数据,您可以使用正确的命名准则和默认绑定器传递数组等。

除此之外,您还需要我们提供其他数据。

【讨论】:

    【解决方案3】:

    您可以通过多种方法将模型发送回控制器。这只是其中之一。由于您似乎一次只想要几个项目发回,可能是动态的 - 这种方法使您可以对发回的内容进行一些控制,然后使用 .ajax() 请求来执行此操作。

    Asp.Net MVC Passing an object from Url.Action in View to Controller

    来自上面的链接:

    $.ajax({ url: '@Url.Action("ControllerActionResult")', 类型:'POST', data: JSON.stringify(model), //你也可以在这里序列化一个表单,或者简单地输入你的数据的名称值对,例如。 myTextBox='某事' 数据类型:'json', 处理数据:假, 内容类型:'应用程序/json;字符集=utf-8', 成功:OnSuccess });

    注意 ajax 文档 jQuery .ajax()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      相关资源
      最近更新 更多