嗨,我有这段代码:
@{ var canUpdatePaymentStatus = !(User.GetId() == paymentDto.SubmittedByPersonId); }
<input type="checkbox" @(canUpdatePaymentStatus != true ? "title=\"Submitter can not approve\"" : string.Empty) />
我想要实现的是,如果canUpdatePaymentStatus为false,则将title属性设置为“Submitter not approve”。
无论这是不起作用,生成的标记是:
<input type="checkbox" title=""Submitter" can="" not="" approve">
所以在悬停时“显示提交者。
有谁知道我做错了什么以及如何让完整的句子出现?
答案 0 :(得分:2)
我更喜欢使用内联。尝试从有条件的
中取出头衔<input type="checkbox" title="@(canUpdatePaymentStatus != true ? "Submitter can not approve" : string.Empty)" />
答案 1 :(得分:0)
这更详细,但应该有效:
@{
var canUpdatePaymentStatus = !(User.GetId() == paymentDto.SubmittedByPersonId);
}
@if (!canUpdatePaymentStatus) {
<input type="checkbox" title="Submitter can not approve" />
} else {
<input type="checkbox" />
}
答案 2 :(得分:0)
您可以使用扩展方法巧妙地处理此问题:
using System.Web.Mvc;
using System.Web.Mvc.Html;
namespace YourProjectName.Helpers
{
public static class CheckboxExtensions
{
public static MvcHtmlString CheckBoxPaymentStatus(this HtmlHelper helper,
string name, bool canUpdatePaymentStatus)
{
if (!canUpdatePaymentStatus)
return helper.CheckBox(name, new { title = Status });
return helper.CheckBox(name);
}
private static string Status = "Submitter can not approve";
}
}
要使帮助程序可用于您的视图,您需要修改~/Views/Web.config
(确保它是那个而不是项目根文件夹中的那个)来添加命名空间。在<system.web.webPages.razor>
标记中,您将找到命名空间列表。您想要为其添加帮助程序。所以它可能看起来像这样:
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="YourProjectName.Helpers" />
</namespaces>
然后在你看来:
@Html.CheckBoxPaymentStatus("PaymentStatus",
!(User.GetId() == paymentDto.SubmittedByPersonId))
如果需要,您甚至可以修改帮助程序以将消息作为参数,以获得额外的灵活性。
但是,更好的方法是将bool
属性添加到名为CanUpdatePaymentStatus
的视图模型中并在控制器中设置:
public ActionResult SomeAction()
{
YourPaymentViewModel model = // ...
model.CanUpdatePaymentStatus = !(User.GetId() == model.SubmittedByPersonId);
return View(model);
}
然后在视图中,您可以将事情简化为:
@Html.CheckBoxPaymentStatus("PaymentStatus", @Model.CanUpdatePaymentStatus)