2017-08-23 3 views
0

私はASP.NET Coreで新しく、ビューでフィールドを表示するかどうか尋ねたいと思います。 私はEditPersonビューでは、私はフィールドを表示する ASP.NETコアに読み取り専用フィールドを表示

<input asp-for="Name" class="form-control" /> 
<input asp-for="Nickname" class="form-control" /> 

を行い、一般的に

class Person { 
    public string Name {get; set;} 
    public string Nickname {get; set;} 
} 

を持っています。

私のEditPersonでは、Nameを読み取り専用に、Nicknameを編集可能フィールドとして表示する必要があります。

Nameテキストボックス(でも読み取り専用)ではなく、むしろラベルまたはのdivにすべきではない...

は、このようなフィールドを表示するための標準的なアプローチはありますか?

フィールドをモデルまたはDBに更新する必要はありません。フィールドを読み取るだけで済みます。 <span>タグなどで適切にこれが必要になりますスタイリング、またはラッピング...

答えて

2

カミソリ構文

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor

@Model.Name 
<input asp-for="Nickname" class="form-control" /> 

注意してHTMLとして出力し、それを属性。あなたのクラスの最上部にusing System.Component;を含めることを忘れないでください。

+1

私はラベルは、それはありませんが、フィールドの表示名ではなく、フィールドの値を表示します怖いですか? – Serge

+0

あなたは正しいです、その提案を削除しました – Alex

+0

これは '@ Model.Name'である必要があります –

1
[ReadOnly(true)] 
public string Name {get; set;} 

読み取り専用を追加 -

+0

これは、すべてのビューでフィールドを読み込み専用にします – Musab

+0

すべてのビューでフィールドが読み込み専用になっても構いません。 .. – Serge

+3

これは、マークアップの表示方法とはまったく関係ありません。 – Alex

0

これは私のために

<input asp-for="Name" class="form-control" ReadOnly="true"/> 
<input asp-for="Nickname" class="form-control" /> 
+0

読み取り専用*テキストボックス*を表示しますか? – Serge

+2

これは、テキストボックスに値を表示します。OPは '名前はテキストボックスに入れられてはいけません ' – Alex

+0

また、フィールドをモデルに更新する必要もありません – Serge

0

を働いていた、これを試してみてください:

<label class="form-control">@Model.Name</label> 
0

これを試してみてください。

<input asp-for="Name" class="form-control" readonly="@(true)"> 
<input asp-for="Name" class="form-control" readonly="@(false)"> 

このレンダリング:

<input class="form-control" type="text" id="Name" name="Name" value="Tom" readonly="readonly"> 
<input class="form-control" type="text" id="Name" name="Name" value="Tom"> 

を私はここからそれを実現:https://github.com/aspnet/Mvc/issues/7333#issuecomment-363504164

+0

良い点ですが、OPを読んでください*名前はテキストボックス内にあってはいけません。 – Serge

関連する問題