我有一个模型,我用来将数据从我的视图传递到我的控制器,但我有一些未绑定的文本框和下拉列表。如何使用ViewData或ViewBag等将我的视图中的未绑定数据传递回控制器。谢谢!
答案 0 :(得分:9)
你能举个例子吗?看起来好像是在混淆你的术语。除了通过POST/GET
之外,通常不会将数据从视图传递到控制器。我会假设这就是你的意思。您可以通过具有相同名称的参数或使用FormCollection
将任何数据输入控制器的操作方法。
public ActionResult SomeMethod(
string yourUnboundTextBoxName,
FormCollection colleciton) { }
在您看来,它可能包含:
<div>
<input type='text' name='yourUnboundTextBoxName' />
</div>
MVC将自动获取yourUnboundTextBoxName
的值并将该值插入到同名参数中。或者您可以使用FormCollection
并从那里获取值。 FormCollection["yourUnboundTextBoxName"]
答案 1 :(得分:0)
您无法使用ViewBag将数据从视图传递到控制器。视图(或至少从视图生成的HTML)可以使用表单将数据发布回控制器,默认绑定器允许您将对象作为控制器方法的参数提供。
如果您需要大量数据,可以使用正确的命名准则和默认活页夹传递数组等。
除此之外,您还需要我们的其他数据。
答案 2 :(得分:0)
您可以通过多种方法将模型发送回控制器。这里只是其中之一。由于您似乎只想要一次发回一些项目,可能是动态的 - 这种方法可让您对发回的内容进行一些控制,然后使用.ajax()请求来执行此操作。
Asp.Net MVC Passing an object from Url.Action in View to Controller
来自上面的链接:
$.ajax({ url: '@Url.Action("ControllerActionResult")', type: 'POST', data: JSON.stringify(model), //you can serialize a form here as well OR simply put in the name value pairs of your data, ex. myTextBox='something' dataType: 'json', processData: false, contentType: 'application/json; charset=utf-8', success: OnSuccess });
请注意ajax文档 jQuery .ajax()