MVC3通过其名称查找控件

时间:2011-11-22 15:00:41

标签: asp.net-mvc-3 findcontrol

我有一个C#.Net网络应用程序,我正在尝试访问Controller中的一个HTML / ASP文本框,用于我的Proposal模型的编辑视图。在非MVC应用程序中,我可以使用Control.ControlCollection.Find()执行此操作。是否存在MVC3项目的等效项目?

4 个答案:

答案 0 :(得分:2)

你在MVC中要求等效Control.ControlCollection.Find()

在MVC中,您的控制器不知道控件

控制器只通过参数接收数据,并通过功能结果返回数据。

您想对控制器代码中的控件做什么?

如果要访问该值,则应将其绑定到参数:

查看:

<input name="MyControl" type="text" />

控制器:

public ActionResult MyAction(string MyControl) {
    // MyControl contains the value of the input with name MyControl
}

答案 1 :(得分:1)

MVC模式旨在将事物分开。

  • View完全不了解控制器
  • Controller只知道视图存在以及它需要什么类型的数据。它不知道数据的

因此,您永远无法从控制器获取有关视图中控件/标签的信息。您需要在视图中使用javascript / jQuery并在控制器中调用正确的操作。

答案 2 :(得分:0)

在MVC应用程序中,您没有像webform-application那样的控件 在MVC中,您可以在控制器中收集所需数据并将其传递给视图。 典型地,视图是带有嵌入代码的HTML页面 与生成HTML并处理MVC中的回发的webforms中的控件相反,您必须手动完成所有这些操作。因此,您没有可以在控制器中轻松访问的属性和事件的控件,您必须使用自己的代码处理所有帖子。
这听起来是因为它需要做更多的工作 - 事实上,如果你实现了复杂控件的行为 - 但是MVC应用程序的维护要好得多,而且你对生成的HTML有100%的影响力。

答案 3 :(得分:0)

很可能我迟到了,但它将来应该帮助其他人...你可以将你的值存储在视野中的隐藏字段中,然后通过以下代码访问控制器中的那个值。

Request.Form["hfAnswerOrder"].ToString();

Point - hfAnswerOrder是隐藏字段的ID

我在cshtml页面中的控件..

@Html.Hidden("hfAnswerOrder", Model.Answers.ToList()[0].AnswerOrder)