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

时间:2011-10-19 16:39:41

标签: asp.net-mvc-3 razor

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

3 个答案:

答案 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()