我可以使剃刀语法更简单

时间:2011-06-17 15:55:26

标签: asp.net-mvc

我有以下内容:

@if ((@Model.SeqId != 0) & (Model.SeqId != 1))
  {
  <text>
  window.location.href = "www.stackoverflow.com";
  </text>
}

我对剃刀了解不多。有什么我可以做的让它变得更简单吗?

2 个答案:

答案 0 :(得分:2)

是的,你可以。我们只需在您的视图模型上定义属性

public bool ShouldRedirectToSO 
{
    get
    {
        return (SeqId != 0 && SeqId != 1);
    }
}

然后:

<script type="text/javascript">
@if (Model.ShouldRedirectToSO)
{
    @:window.location.href = 'http://www.stackoverflow.com';
}
</script>

如果您打算在页面加载时立即重定向,如果满足条件,您也可以直接从控制器执行此操作:

public ActionResult Foo()
{
    var model = ...
    if (model.ShouldRedirectToSO)
    {
        return Redirect("http://www.stackoverflow.com");    
    }
    return View(model);
}

答案 1 :(得分:1)

SeqId能否小于0?如果没有,你可以做

@if (Model.SeqId > 1)
{
  <text>
  window.location.href = "www.stackoverflow.com";
  </text>
}

此外,您不需要在代码块中使用@模型。你可能想要使用&amp;&amp;而不是&amp;因为一旦第一次测试失败就会失败,节省了几个CPU周期。

http://msdn.microsoft.com/en-us/library/2a723cdk(v=vs.71).aspx