ASP.NET MVC3-@ Html.EditorForを含むtextarea


209

ASP.NET MVC3アプリがあり、ニュースを追加するためのフォームもあります。VS2010がデフォルトビューを作成したとき、文字列データのテキスト入力しかありませんが、ニューステキストのtextareaが必要です。Razor構文でそれを行う方法。

テキスト入力は次のようになります。

@Html.EditorFor(model => model.Text)

関連して、そのEditorTemplateをカスタマイズする方法についての別の質問に対するこの回答を参照してください。
Jeroen 2015

回答:


375

次の[DataType]ように、ビューモデルの属性を使用できます。

public class MyViewModel
{
    [DataType(DataType.MultilineText)]
    public string Text { get; set; }
}

そして、あなたはコントローラを持つことができます:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }
}

そしてあなたが望むことをするビュー:

@model AppName.Models.MyViewModel
@using (Html.BeginForm())
{
    @Html.EditorFor(x => x.Text)
    <input type="submit" value="OK" />
}

7
私が探していたものはほとんどですが、行と列のHTML属性を指定する必要がある場合はどうなりますか?
Jason、

3
私はまだ[class = "text-box single-line"]をソースコードで取得しています:(
Stavros

7
非常に知識が豊富でありながら、すべてを段階的に説明し、説明をシンプルにします。あられ@Darin Dimitrov。
İsmetアルカン

@Jasonはスタイル設定にCSSを使用します。
Jo Smo、2015

DataAnnotationsftw!ありがとうございました。

136

誰かが属性(具体的には、「行」と「列」)の追加について質問しました。Razorを使用している場合は、次のようにします。

@Html.TextAreaFor(model => model.Text, new { cols = 35, @rows = 3 })

それは私にとってはうまくいきます。'@'はキーワードをエスケープするために使用され、変数/プロパティとして扱われます。


確かに-cols / rowsのあるテキスト領域が必要なことがわかっている場合、TextAreaForの代わりにEditorForを使用する理由はほとんどありません。EditorForを使用する必要がある理由が誰にでもあり、列/行を指定する必要があることを知っていますか?
James Haug、2016年

95
@Html.TextAreaFor(model => model.Text)

6
ここでの一般的な回答にはデータベースモデルの変更が含まれるため、この方法の方が好きです。つまり、EntityFrameworkを使用する場合は、基になるデータベースを削除して再作成する必要があります。
Ciaran Gallagher

6
そのDataType注釈は、Entity Frameworkの更新を強制しません。
Tallmaris 2013

9
@Ciaran:このステートメントはベルを鳴らすはずです。UIを変更するためにデータベースレイヤーを変更する必要はありません。データベースオブジェクトへのマッパーであるプレゼンテーションオブジェクトがあるはずです。ur UIでデータベースオブジェクトを使用しないでください。
Frederik Prijck 14

5
明確にするために、Frederikが参照しているのは、DbContextで使用されるクラスからビューデータSEPARATEを表すクラスを作成することです。DbContextモデルをビューに渡さないでください。ビューモデルクラスを作成し、入力を受け入れるときに、必要な情報をdbモデルからビューモデルに、またはその逆にシフトします。
ジムヤーブロ2014

3
@FrederikPrijck私は反対しませんが、それはDRYプリンシパルに違反しませんか?すべてのプロパティを1つのクラスから別のクラスにコピーする必要があります。あなたが見つけた、それを行うことのより少ない「平凡」はありますか?
James Haug、2016年

1

でモデルを宣言する

  [DataType(DataType.MultilineText)]
  public string urString { get; set; }

次に、.cshtmlで以下のようにエディターを使用できます。 TextAreaサイズに@cols@rowsを使用できます

     @Html.EditorFor(model => model.urString, new { htmlAttributes = new { @class = "",@cols = 35, @rows = 3 } })

よろしくお願いします!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.