2011-10-19 195 views
2

我有一个模型,我正在使用从我的视图传递数据到我的控制器,但我有一些从文本框和下拉列表中解除绑定。我该如何将未绑定的数据从我的视图传递回使用ViewData或ViewBag ....或其他东西的控制器。谢谢!如何在mvc3中将数据从剃须刀视图传递给控制器​​?

+0

你是什么意思?请告诉我们你想做什么。 – SLaks

+0

你是什么意思'通过未绑定的数据' –

回答

9

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

public ActionResult SomeMethod(
         string yourUnboundTextBoxName, 
         FormCollection colleciton) { } 

您认为它可能是这样的:

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

MVC会自动采取的yourUnboundTextBoxName值,并将该值插入相同名称的参数。或者你可以使用FormCollection并从那里获得价值。 FormCollection["yourUnboundTextBoxName"]

+0

你的回答让我朝着正确的方向前进,我想要/需要做的事情。结合这个答案http://stackoverflow.com/q/2408043/114029我能够回发隐藏的输入值回到控制器的行动方法到一个未绑定名单。大! :-)我现在不能投你的答案,因为我今天没有更多的投票。我会保持Firefox标签打开4小时以上,以便我可以投票给你... =] –

0

您无法使用ViewBag将数据从视图传递到控制器。该视图(或至少是从视图中生成的HTML)可以使用表单将数据发回控制器,并且默认绑定器将允许您将对象作为参数提供给控制器的方法。

如果您需要大量数据,您可以使用正确的命名规则和默认绑定来传递数组等等。

除此之外,您还需要我们提供其他数据。

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 
}); 

注阿贾克斯文档 jQuery .ajax()

相关问题