【发布时间】:2018-07-17 17:50:18
【问题描述】:
我有一个通过Razor Pages 构建的表单。该表单由两个提交按钮组成——每个按钮都分配给一个适当的asp-page-handler,如下所示:
@page "{id:int}"
//...
<form asp-action="Post">
<input type="submit" asp-page-handler="Approve" class="btn btn-success" value="Approve" />
<input type="submit" asp-page-handler="Decline" class="btn btn-danger" value="Decline" />
</form>
处理程序正常工作。现在我需要通过某些条件禁用“批准”按钮。
不幸的是,我无法弄清楚使用 Razor Pages 归档此文件的正确方法是什么?
我尝试了以下(条件被简化):
@{ var disableTag = "disabled"; }
...
<input type="submit" asp-page-handler="Approve" class="btn btn-success" value="Approve" @disableTag />
应用程序启动后标记保持不变,按钮仍处于启用状态。似乎asp-page-handler 标签强制剃须刀引擎忽略@disableTag 变量。
下一次尝试是(@disableTag 放在asp-page-handler 前面):
<input type="submit" @disableTag asp-page-handler="Approve" class="btn btn-success" value="Approve" /
现在页面正确呈现(disabled 标记在那里),但处理程序本身停止工作(标记将 asp-page-handler="Approve" 显示为普通标记,而不是像 /{PageName}/{id}?handler=Approve 这样的标记)
我在这里做错了什么?
【问题讨论】:
-
条件可以通过以下方式在您的
cshtml文件中使用。<form asp-action="Post"> @if(some condition){ <input type="submit" asp-page-handler="Approve" class="btn btn-success" value="Approve" disabled/> } @else{ <input type="submit" asp-page-handler="Decline" class="btn btn-danger" value="Decline" /> } </form>我希望它能回答你的问题 -
谢谢,这应该适用于最简单的情况。但它似乎并不优雅
标签: asp.net razor razor-pages