web-dev-qa-db-ja.com

Html.EditorForデフォルト値の設定

ルーキーの質問。作成ビューに渡されるパラメーターがあります。デフォルト値でフィールド名を設定する必要があります。 @ Html.EditorFor(model => model.Id)actionlinkを介してビューに渡されるデフォルト値を使用して、この入力フィールドに名前Idを設定する必要があります。

したがって、この入力フィールド-@ Html.EditorFor(model => model.Id)-をデフォルト値に設定するにはどうすればよいですか。

次のように動作しますか?数値5は、デフォルト値を設定するためにテキストフィールドに渡すパラメーターです。

@Html.EditorFor(c => c.PropertyName, new { text = "5"; })
71
Nate

そのためのクリーンな方法は、作成したエンティティの新しいインスタンスをコントローラーに渡すことです。

//GET
public ActionResult CreateNewMyEntity(string default_value)
{
    MyEntity newMyEntity = new MyEntity();
    newMyEntity._propertyValue = default_value;

    return View(newMyEntity);
}

ActionLinkを介してデフォルト値を渡したい場合

@Html.ActionLink("Create New", "CreateNewMyEntity", new { default_value = "5" })
57
Shadi

私が見つけたものは次のとおりです。

@Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" })

小文字のvではなく、大文字のVで動作します(値であるという仮定は、通常、セッターで使用されるキーワードです) 下限値と上限値

@Html.EditorFor(c => c.Propertyname, new { @Value = "5" })

動作しません

あなたのコードは最終的にはこのようになります

<input Value="5" id="Propertyname" name="Propertyname" type="text" value="" />

値対値。私はそれがあまりにも好きだろうかどうかわからない。

プロパティに値があるかどうか、そしてビューモデルでデフォルト値に設定せず、ビューでこのすべての猿の動作を回避するようにバインドしない場合、なぜコントローラーアクションをチェックインしないのですか?

97
Khepri

ビューでデフォルト値を設定するのは適切ではありません。ビューは、表示作業を実行する必要があります。このアクションは、MVCパターンのイデオロギーを破ります。デフォルトを設定する適切な場所-コントローラクラスのメソッドを作成します。

16
Anton Semenov

より良いオプションは、ビューモデルでこれを行うことです

public class MyVM
{
   int _propertyValue = 5;//set Default Value here
   public int PropertyName{
       get
       {
          return _propertyValue;   
       }
       set
       {
           _propertyValue = value;
       }
   }
}

その後、あなたの意見で

@Html.EditorFor(c => c.PropertyName)

あなたが望むように動作します(値のデフォルト値がない場合)

14

@Html.EditorFor()は、モデルに配置した属性を使用すべきではありませんか?

[DefaultValue(false)]
public bool TestAccount { get; set; }
3
Zapnologica

私はちょうどこれをしました(Shadiの最初の答え)、それは御works走になります:

    public ActionResult Create()
    {
        Article article = new Article();
        article.Active = true;
        article.DatePublished = DateTime.Now;
        ViewData.Model = article;
        return View();
    } 

適切なMVC常習者のようにモデルにデフォルト値を入れることができます:(Entity Frameworkを使用しています)

    public partial class Article
    {
        public Article()
        {
            Active = true;
            DatePublished = Datetime.Now;
        }
    }

    public ActionResult Create()
    {
        Article article = new Article();
        ViewData.Model = article;
        return View();
    } 

誰もこれの欠点を見ることができますか?

3
Smithy

ViewBagに押し込みます:

コントローラ:

ViewBag.ProductId = 1;

見る:

@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
2
user2216667

これは私のために働いた

In Controlle

 ViewBag.AAA = default_Value ;

表示中

@Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }
1
Mohamed Wardan

モデルクラスのコンストラクタメソッドで、必要なデフォルト値を設定します。次に、最初のアクションでモデルのインスタンスを作成し、ビューに渡します。

    public ActionResult VolunteersAdd()
    {
        VolunteerModel model = new VolunteerModel(); //to set the default values
        return View(model);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult VolunteersAdd(VolunteerModel model)
    {


        return View(model);
    }
0
Ozan BAYRAM

これは私の作業コードです:

@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @Value = "123" } })

他の答えとの私の違いは、htmlAttributes配列内でValueを使用することです

0
Hamed R