2013-05-27 23 views
0

我甚至不知道我会问这个问题。基本上,你知道你在剃刀有这样的东西:在Razor中,如何设置当前的模型范围?

@model MyProj.childObj 
// Current scope is childObj 
@Html.LabelFor(m => m.MyVal) 
@Html.LabelFor(m => m.MyVal2) 
@Html.LabelFor(m => m.MyVal3) 
... 

这所有的工作非常愉快,但如果我Concat的childObj到另一个OBJ?因此,例如:

@model MyProj.parentObj 

所以,现在,我可以这样做:

// Current scope is parentObj 
@Html.LabelFor(m => m.childObj.MyVal) 
@Html.LabelFor(m => m.childObj.MyVal2) 
@Html.LabelFor(m => m.childObj.MyVal3) 
... 

这是很好的,但因为我有很多的变量,我想这样做,而不是:

// Current scope is parentObj 
@using (Model.childObj) { 
    // Current scope is now childObj 
    @Html.LabelFor(m => m.MyVal) 
    @Html.LabelFor(m => m.MyVal2) 
    @Html.LabelFor(m => m.MyVal3) 
    ... 
} 

这可能吗?

回答

1

是的。您可以在Razor中定义变量并使用它们。

@{ 
    var child = Model.childObj; 
    @Html.LabelFor(m => child.MyVal) 
    @Html.LabelFor(m => child.MyVal2) 
    @Html.LabelFor(m => child.MyVal3) 
} 
+0

效果很好,只改变我不得不做出是因为它已经delcared去除米声明(由defualt?)/ – Bill

+0

从'M'更改本地变量'm2'。这将消除局部变量'm'和谓词参数'm'的歧义。 –