mvc3 - 设置焦点以从Controller控制

时间:2012-10-27 22:04:57

标签: asp.net-mvc-3

调用视图时,我可以从控制器中将焦点设置为控件吗?

(据我所知,典型的最佳做法是在加载页面时使用jQuery将焦点设置为控件。)

2 个答案:

答案 0 :(得分:3)

控制器的工作(其中之一)是设置一个视图模型,为视图提供足够的信息以正确呈现。换句话说,控制器和视图应该只是松散耦合。

这是一种方法。尽管可以更优雅地完成,但这有点脱钩。您仍然需要JavaScript来执行客户端脚本,但脚本是基于视图模型中的值生成的。

<强>控制器

public ActionResult Foo(){

   var model = new MyViewModel();
   model.SelectedItem = "FirstName";

   return View( model );
}

查看

@model MyViewModel

@Html.TextBoxFor( o => o.FirstName )

@if( Model.SelectedItem != default( string ) ){
    <script>$("#@(Model.SelectedItem)").focus();</script>
}

答案 1 :(得分:3)

您需要了解的有关Web开发的一件事是,您可以在服务器上拥有世界上所有的技术,但最终,这些技术必须生成标准(或通过它)Html,CSS和JavaScript的。

这意味着在服务器上没有特殊的魔法可以自动在客户端上执行操作。有些框架可以自动生成代码来为您完成此操作,但最终仍必须以标准的html / css / js完成。

MVC仅呈现标准的纯HTML。 Webforms将为您做很多事情,但最终Webforms也必须生成标准HTML。它通过自动生成javacript来实现这一点,该javacript包含在页面中,在加载时设置焦点。

MVC不为你做任何这些事情,所以你基本上必须做同样的事情,但你必须写它。使用一些简单的jquery相对简单。