我有一个C#.Net网络应用程序,我正在尝试访问Controller中的一个HTML / ASP文本框,用于我的Proposal模型的编辑视图。在非MVC应用程序中,我可以使用Control.ControlCollection.Find()
执行此操作。是否存在MVC3项目的等效项目?
答案 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模式旨在将事物分开。
因此,您永远无法从控制器获取有关视图中控件/标签的信息。您需要在视图中使用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)