0

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

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

4

2 回答 2

3

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

这意味着没有什么特殊的魔法可以在服务器上自动在客户端上做事。一些框架可以自动生成代码来为你做这件事,但最终还是必须作为标准的 html/css/js 来完成。

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

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

于 2012-10-27T22:17:06.107 回答
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>
}
于 2012-10-27T22:16:16.730 回答