繁体   English   中英

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

[英]When to use @using in my razor syntax view in ASP.Net MVC 5

是的,我在谷歌搜索它我找不到确切的答案。

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

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

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

@using OtherNamespace

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

请注意,在MVC 5中的视图中导入名称空间还有另一种方法,它使用位于“Views”文件夹中的Web.config文件(请注意,这不是全局 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>

这样您就不需要在.cshtml文件中添加@using语句。

[编辑]

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

@using MyNamespace.MyNestedNamespace
@model MyModel

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

@model MyNamespace.MyNestedNamespace.MyModel

没有真正的区别,由您认为对于该视图更好。

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

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

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

在许多情况下你需要@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);

希望,这有点道理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM