1

こんにちは、私はこのコードを持っています:

    @{ var canUpdatePaymentStatus = !(User.GetId() == paymentDto.SubmittedByPersonId); }

<input type="checkbox" @(canUpdatePaymentStatus != true ? "title=\"Submitter can not approve\"" : string.Empty) />

私が達成しようとしているのは、canUpdatePaymentStatus が false の場合、タイトル属性を「送信者は承認できません」に設定することです。

これが機能していない場合でも、生成されるマークアップは次のとおりです。

<input type="checkbox" title=""Submitter" can="" not="" approve&quot;>

ホバーすると「送信者が表示されます。

私が間違っていることと、完全な文を表示する方法を誰かが知っていますか?

4

3 に答える 3

3

私はインラインを使用することを好みます。条件からタイトルを取り出してみてください

<input type="checkbox" title="@(canUpdatePaymentStatus != true ? "Submitter can not approve" : string.Empty)" />
于 2013-11-11T00:59:47.163 に答える
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)
于 2013-11-11T01:26:13.327 に答える