目前我的表单以@using (Html.BeginForm
开头
我有一个这样的提交按钮:
<input id="submitButton" type="submit" value="Update stuff" />
现在提交后,我想显示另一个按钮而不是那个按钮,例如:
<input id="continueButton" type="button" value="Continie to next page" />
所以我理解我的模型上应该有一个属性,例如@Model.ShowSubmitButton
,这个属性是真是假。根据我的学习,我应该做一些接近
@if(Model.ShowSubmitButton)
<input id="submitButton" type="submit" value="Update stuff" />
else
<input id="continueButton" type="button" value="Continie to next page" />
但是,如果实际上我的方法是正确的,那么我无法得到Razor语法错误。所以我需要这方面的帮助。我想用MVC做,而不是用JS,因为我还不知道JS。
答案 0 :(得分:2)
您最初尝试的问题以及rashfmnb为您解决的问题是由于您推断的{}
。既然你说'#34;它已经修好了我的猜测&#34;,我将解释原因:
Razor将您的标记解析为HTML,除非它知道应该将其作为C#代码读取。您通常通过使用@
符号启动语句来执行此操作。当你启动if时,你就这样做了。但是,您有一个HTML元素<input>
。一旦关闭,Razor就不知道它应该回去解析else
作为C#。它会假设它只是纯文本,应该是DOM的一部分。
通过在条件语句周围添加花括号,您可以告诉Razor解析器,当它到达结束括号时,它应该返回将其解析为C#代码。这就是为什么else
现在再次被选中,只显示一个或另一个。
答案 1 :(得分:1)
像这样使用
@if(Model.ShowSubmitButton)
{
<input id="submitButton" type="submit" value="Update stuff" />
}
else
{
<input id="continueButton" type="button" value="Continie to next page" />
}
最后但并非最不重要的是弄清楚JS