关于ASP.Net MVC的基本查询很少

时间:2013-09-16 19:26:38

标签: asp.net-mvc-3

我是mvc的新手,并通过浏览wrox书来学习它。我遇到了一些事情,我正在寻找好的澄清。为一次性提出许多问题而道歉。

1)@ Html.DisplayFor& @ Html.EditFor

当我们使用@ Html.DisplayFor然后在客户端呈现什么html控件? 当我们使用@ Html.EditFor然后在客户端呈现什么html控件?

2)ModelState.IsValid的作用是什么?

我总是看到ModelState.IsValid返回true?什么时候实际返回假?

3)如何从ModelState中提取表单提交的值?

我尝试这样做,如ModelState [“Name”]或ModelState [“Name”]。ToString()都给出了错误。

4)mvc中的远程验证是什么?

5)当我们使用html helper渲染文本框时,我怎么能用它附加多个属性。我试过这种方式

我试图像这样显示模型文本,但没有

@ Html.LabelFor(m => m.Name,new {@id =“name”,@ class =“”,title =“@ m.Name”})

我们不能像这样指定或分配模型文本title =“@ m.Name”吗?如果没有那么我怎么能将模型文本分配给title属性?

当我们使用html控件属性

时需要使用@符号

6)是否可以直接从视图中调用不同类型的函数/方法 我想知道

a)如果我有很少的静态函数或静态类函数,那么我们可以直接从视图中调用它吗?

b)我们可以直接从控制器方法查看吗?

c)如何直接从视图中调用任何泛型方法?

d)是否可以直接从视图调用任何操作方法?

e)我们可以直接从视图调用任何模型方法吗?

这是可能的,而不是请解释原因和示例代码

7)关于数据注释

我想使用数据注释但我希望数据注释应该在页面中呈现不同的js以用于花哨的验证消息。如何使用不同的jquery验证插件和数据注释....我们需要在代码中进行更改。

请用示例&来回答我所有的问题。示例代码以便更好地理解。感谢

1 个答案:

答案 0 :(得分:2)

  

当我们使用@ Html.DisplayFor然后在客户端呈现什么html控件?

这完全取决于您呼叫DisplayFor的属性的具体类型。 DisplayFor帮助程序将分析表达式中使用的属性的特定类型,并调用相应的显示模板。您还可以为视图模型类型编写自定义显示模板。 Brad Wilson撰写了一篇关于模板的精彩博文,邀请您通过这些文章更好地熟悉基本概念:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

有一系列帖子,请确保您已全部阅读。

  

当我们使用@ Html.EditFor然后在客户端呈现什么html控件?

这完全取决于您呼叫EditorFor的属性的具体类型。 EditorFor帮助器将分析表达式中使用的属性的特定类型,并调用相应的编辑器模板。您还可以为视图模型类型编写自定义编辑器模板。 Brad Wilson撰写了一篇关于模板的精彩博文,邀请您通过这些文章更好地熟悉基本概念:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

有一系列帖子,请确保您已全部阅读。

  

我总是看到ModelState.IsValid返回true?什么时候实际返回假?

当ModelState中添加了错误时。如果您在视图模型上使用了一些数据注释来进行验证,并且提交给服务器的值未通过此验证,则可能会发生这种情况。通常,它是将请求值绑定到视图模型时将错误消息添加到ModelState(使ModelState.IsValid返回false)的默认模型绑定器。

  

我试着这样做,比如ModelState [" Name"]或ModelState [" Name"]。ToString()都给出错误。

在ASP.NET MVC中,您使用视图模型。您的[HttpPost]控制器操作将视图模型作为参数,该类是专门为满足视图逻辑目的而设计的类。以下是ASP.NET MVC中典型POST操作的示例:

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    if (!ModelState.IsValid)
    {
        // validation on the view model failed => redisplay the view 
        // so that the user can fix the errors
        return View(model);
    }

    // At this stage you know that the model has passed validation
    // It is here that you would typically map the view model to some domain model(s)
    // and pass them to your DAL for some processing.
    // Finally when this processing completes redirect (Redirect-After-Get pattern)

    return RedirectToAction("Success");
}
  

4)mvc中的远程验证是什么?

它是一个用[Remote]属性修饰的视图模型属性,后者又在相应的输入字段上发出了一些HTML5 data- *属性。反过来,jquery.validate.unobtrusive.js脚本将使用这些属性将AJAX请求发送到相应的控制器操作,以在实际提交表单之前执行验证。请随时阅读相应的文档:http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx

  

a)如果我有很少的静态函数或静态类函数那么可以   我们直接从视图中调用它?

当然不是。这个问题没有任何意义。该视图不了解除控制器操作之外的任何服务器端特定事物。因此,如果您想从视图中调用某些内容,则ASP.NET MVC世界中的某些内容称为控制器操作。你当然可以用AJAX或其他东西来称呼它。

  

b)我们可以直接从控制器方法查看吗?

是的,当然,如果此控制器方法返回ActionResult,在这种情况下,此控制器方法的名称为:控制器操作

  

c)如何直接从视图

调用任何泛型方法

绝对不可能。如果可能的话,这将是一个巨大的安全漏洞。您只能从视图中调用控制器操作。

  

e)我们可以直接从视图调用任何模型方法吗?

不,为了基督的缘故。我再说一遍:如果可能的话,那将是一个巨大的成熟漏洞。您只能从视图中调用控制器操作。

  

我想使用数据注释,但我想要数据注释   在页面中呈现不同的js用于花式验证消息。如何使用   不同的jquery验证插件与数据注释....我们在哪里   需要改变代码。

抱歉,我完全不知道你在这里问的是什么。 ASP.NET MVC客户端验证与jquery.validate插件紧密结合(我邀请您阅读其文档以更好地理解其功能:http://jqueryvalidation.org/documentation/)。如果这个插件不能满足你的要求,毕竟ASP.NET MVC视图会吐出HTML,所以感觉不仅仅是免费使用一些可能符合你特定需求的gazillions可用的javascript验证插件。

希望这能回答你的一些问题。下次在StackOverflow上发布问题时,请确保它非常具体,而不是询问整个世界的理念(正如您在此处所做的那样)。做好功课,阅读文档,如果您遇到具体问题,请发布您的代码,解释您遇到的困难,我们将很乐意为您提供帮助。