如何将数据从剃刀视图传递到 mvc3 中的控制器?

Posted

技术标签:

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

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

【问题讨论】:

什么意思?请告诉我们你想做什么。 “传递未绑定的数据”是什么意思 【参考方案1】:

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

public ActionResult SomeMethod(
                       string yourUnboundTextBoxName, 
                       FormCollection colleciton)  

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

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

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

【讨论】:

您的回答为我想要/需要做的事情指引了正确的方向。结合这个答案***.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()

【讨论】:

以上是关于如何将数据从剃刀视图传递到 mvc3 中的控制器?的主要内容,如果未能解决你的问题,请参考以下文章

请为 MVC3 命名一些教程,它显示了从控制器到视图的数据传输

在混合 MVC3 项目中,剃刀视图优先于 aspx

在剃刀中将迭代数据从按钮传递到模态

ASP.Net MVC3 - 将剃刀标记作为参数传递

MVC2,MVC3,MVC4和MVC5的不同

如何将剃刀视图模式属性值传递给 javascript 函数