2012-04-01 84 views
2

也许这已被解决在别的地方,但我找不到要搜索的关键字。ASP.NET MVC剃刀内容占位符

在带有Razor视图引擎的ASP.NET MVC中:我有一个视图,它使用相同的if语句在html的不同部分重复多次。我不知道是否有合并的所有这些的方式,如果是到一个单一的,如果和设定值的占位符,将保存每个那些如果公司有现货,像这样:

<div>@ph1</div> 
<div>@ph3</div> 
<div>@ph2</div> 

@if(true) 
{ 
    ph1 = "<div>adfad<div>" 
    ph2 = "dsfaadfad" 
    ph3 = Model.Value 
} 

这是怎么样的一个愚蠢的例子,但我认为这说明了我的意思。

+0

你现在应该有足够的代表来发布你的答案作为答案。你应该这样做。 – 2012-04-01 05:24:41

+0

没有。我需要100. – quitstalin 2012-04-01 05:38:51

+0

当你尝试将它发布为答案时,你会得到什么信息? 10代表是删除新用户限制所需的全部内容,这些限制会阻止您发布答案。请参阅http://stackoverflow.com/privileges – 2012-04-01 05:50:25

回答

1
@{ 
    MvcHtmlString ph1 = new MvcHtmlString(""); 
    MvcHtmlString ph2 = new MvcHtmlString(""); 
    if (true) 
    { 
     ph1 = new MvcHtmlString("<div>" + Model.Value + "<div>"); 
     ph2 = new MvcHtmlString("<div>fsgfdgdfg<div>"); 
    } 
} 

@ph1 
@ph2 

再一次,愚蠢的使用,但它使重点。

正如其中一个答案中的建议,我有一个很好的补充是分配一个帮手。这样可以更轻松地分配多个语句而不需要大量的连接。

@helper helper() 
{ 
    <span>@Model.Value</span> 
    <div>dsfadsfasdfdfa</div> 
} 

@{ 
    MvcHtmlString ph1 = new MvcHtmlString(""); 
    MvcHtmlString ph2 = new MvcHtmlString(""); 
    if (true) 
    { 
     ph1 = new MvcHtmlString("<div>" + Model.Value + "<div>"); 
     ph2 = new MvcHtmlString(helper().ToHtmlString()); 
    } 
} 

@ph1 
@ph2 

如果有人有更好的想法,我仍然有兴趣。

0

意见通常不应该在你的观点的逻辑(尤其是创建HTML一个帮手)。更好的选择是使用部分视图或显示templtates。

模型/ [控制器]

public class SomeViewModel() 
{ 
    //[UIHint("PhoneNumber")] 
    //public string ph1 { get; set; } 
    //[UIHint("PhoneNumber")] 
    //public string ph1 { get; set; } 
    //[UIHint("PhoneNumber")] 
    //public string ph1 { get; set; } 

    //if these all represent phone numbers, it would be ideal to 
    [UIHint("PhoneNumbers")] 
    IEnumerable<string> PhoneNumbers { get; set; } 
} 

视图/ [控制器]

@model SomeViewModel 

@Html.DisplayFor(m => m.PhoneNumbers); 

视图/共享/ DisplayTemplates/PhoneNumbers.cshtml

@model IENumerable<string> 

@foreach (string phoneNumber in Model) 
{ 
    <div>@phoneNumber</div> 
} 
+0

这不会解决问题,我个人不使用DisplayFor,因为通过HTML配置用户界面更容易和更自然,并且保持用户界面内容不在我的数据服务。 – quitstalin 2012-04-01 16:18:11