何时在ASP.Net MVC 5中使用我的剃刀语法视图中的@using

时间:2017-05-13 13:36:32

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

是的,我在google上搜索过它找不到确切的答案。

那么,何时在我的剃刀语法视图中使用@using SomeModel。我是ASP.net MVC 5的新手,我知道每个视图都可以强烈绑定到模型或viewModel,我们使用@model ModelName。当我在剃须刀视图中使用@using时会出现什么情况。任何例子都将受到高度赞赏。

3 个答案:

答案 0 :(得分:5)

每次需要在视图中导入名称空间时。这与在标准C#代码文件中导入命名空间时相同。

因此,如果您需要使用在与View之前不同的命名空间中声明的类型,则在使用该类型之前,您需要添加using语句。

@using OtherNamespace

@{
    var example = new ExampleClass(); // full name is OtherNamespace.ExampleClass
}

请注意,在MVC 5中的视图中导入名称空间还有另一种方法,它使用位于“Views”文件夹中的Web.config文件(请注意,这不是 global { {1}}文件)。您可以通过添加以下部分来添加更多名称空间:

Web.config

这样您就不需要在<system.web.webPages.razor> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="OtherNamespace" /> </namespaces> </pages> </system.web.webPages.razor> 文件中添加@using语句。

<强> [编辑]

关于视图中的.cshtml语句,基本上有两个选项:

@model

或者,如果您认为您不需要该命名空间中的任何其他类型:

@using MyNamespace.MyNestedNamespace
@model MyModel

没有真正的区别,取决于你认为哪种观点更好。

答案 1 :(得分:2)

除了上面的答案,你通常会在创建表单时使用@using:

@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, 
                                  new { enctype = "multipart/form-data" }))
{
//TODO: Logic here
}

这提供了方便的语法,可确保正确使用IDisposable对象。有关更多参考,请访问here

答案 2 :(得分:1)

许多情况下你需要@using,例如见下文:

您有一个视图功能

@using System.Text.RegularExpressions;
 public string StripHtml(string inputHTML)
 {
    if (inputHTML == null) {
        return string.Empty;
    }
    string noHTML = Regex.Replace(inputHTML, @"<[^>]+>|&nbsp;", "").Trim();
    string noHTMLNormalised = Regex.Replace(noHTML, @"\s{2,}", " ");
    return noHTMLNormalised;
}

这里我的func需要来自System.Text.RegularExpressions的正则表达式;

将一些新模型类传递给另一个视图

@using Model.Customer
@model Model.User

var cust = new Customer();
cust.Name = Model.Name;
Html.RenderPartial("_CustomerDetails", cust);

希望,这是有道理的。

相关问题