【发布时间】:2011-12-11 02:37:21
【问题描述】:
我有一个模型,用于将数据从我的视图传递到我的控制器,但我有一些未绑定的文本框和下拉列表。如何使用 ViewData 或 ViewBag....或其他东西将未绑定的数据从我的视图传递回我的控制器。谢谢!
【问题讨论】:
-
什么意思?请告诉我们你想做什么。
-
“传递未绑定的数据”是什么意思
标签: asp.net-mvc-3 razor
我有一个模型,用于将数据从我的视图传递到我的控制器,但我有一些未绑定的文本框和下拉列表。如何使用 ViewData 或 ViewBag....或其他东西将未绑定的数据从我的视图传递回我的控制器。谢谢!
【问题讨论】:
标签: asp.net-mvc-3 razor
你能举个例子吗?看起来好像你在混淆你的术语。除了通过POST/GET 之外,您通常不会将数据从视图传递到控制器。我假设这就是你的意思。您可以通过具有相同名称的参数或使用FormCollection 将任何数据获取到控制器的操作方法中。
public ActionResult SomeMethod(
string yourUnboundTextBoxName,
FormCollection colleciton) { }
在您看来,它可能类似于:
<div>
<input type='text' name='yourUnboundTextBoxName' />
</div>
MVC 将自动获取yourUnboundTextBoxName 的值并将该值插入到同名参数中。或者您可以使用FormCollection 并从那里获取值。 FormCollection["yourUnboundTextBoxName"]
【讨论】:
您不能使用 ViewBag 将数据从视图传递到控制器。视图(或至少从视图生成的 HTML)可以使用表单将数据发送回控制器,默认绑定器允许您将对象作为参数提供给控制器的方法。
如果您需要大量数据,您可以使用正确的命名准则和默认绑定器传递数组等。
除此之外,您还需要我们提供其他数据。
【讨论】:
您可以通过多种方法将模型发送回控制器。这只是其中之一。由于您似乎一次只想要几个项目发回,可能是动态的 - 这种方法使您可以对发回的内容进行一些控制,然后使用 .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()
【讨论】: