如何将数据从剃刀视图传递到 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您不能使用 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 中的控制器?的主要内容,如果未能解决你的问题,请参考以下文章