MVC3-将重点设置为从控制器控制



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

(我了解典型的最佳实践是使用jQuery在加载页面时将重点设置为控件。)

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

这是做到这一点的一种方法。尽管可以更优雅地完成,但这有点脱钩。您仍然需要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>
}

您必须了解有关Web开发的一件事是您可以拥有服务器上的所有技术,但最终,这些技术必须生成标准(或通过的内容为此)HTML,CSS和JavaScript。

这意味着在服务器上无法在客户端上自动执行操作。有些框架可以自动生成代码为您执行此操作,但是它仍然必须作为标准HTML/CSS/JS完成。

MVC仅渲染标准,平原HTML。WebForms将为您做很多事情,但最终WebForms也必须生成标准HTML。它是通过自动生成Javacript包含在页面中的Javacript来做到这一点的,该页面上的负载设置了焦点。

MVC不会为您做任何这些事情,因此您基本上必须做同样的事情,但是您必须编写它。使用一些简单的jQuery相对简单。

最新更新