1

2 つの属性を追加するシナリオがあります。

1 つは動的、つまりユーザー ロールに基づく読み取り専用で、もう 1 つは静的、つまりID

以下でこれを試しましたが、うまくいきません。

以下のHTMLでレンダリングされた属性は

readonlystr = , id = '従業員名'

var readonlystr = (Model.Role.EmpEdit) ? "" : "readonly=readonly";

@Html.TextBoxFor(m => m.Name, new { readonlystr, @id = "emp-name" })
@Html.TextBoxFor(m => m.Age, new { readonlystr, @id = "emp-age" })
@Html.TextBoxFor(m => m.City, new { readonlystr, @id = "emp-city" })

2つの属性を組み合わせて渡すことでこれを達成するための提案はありますか?

4

2 に答える 2

1
var readonlystr = Model.Role.EmpEdit ? new Dictionary<string, object>() : new Dictionary<string, object> { { "readonly", "readonly" } };

@Html.TextBoxFor(m => m.Name, readonlystr.Union(new Dictionary<string, object>{{"id", "emp-name"}}).ToDictionary(x=>x.Key, x=>x.Value))
于 2013-01-18T12:46:37.153 に答える
0
    @{
        Dictionary<string, object> attribs = new Dictionary<string, object>();
        if (!Model.Role.EmpEdit) {
            attribs.Add("readonly", "readonly");
        }
        attribs.Add("id", "");
    }

    @{attribs["id"] = "emp-name";}
    @Html.TextBoxFor(m => m.Name, attribs)
    @{attribs["id"] = "emp-age";}
    @Html.TextBoxFor(m => m.Age, attribs)
于 2013-01-18T12:46:53.467 に答える