ルーキーの質問。作成ビューに渡されるパラメーターがあります。デフォルト値でフィールド名を設定する必要があります。 @ Html.EditorFor(model => model.Id)actionlinkを介してビューに渡されるデフォルト値を使用して、この入力フィールドに名前Idを設定する必要があります。
したがって、この入力フィールド-@ Html.EditorFor(model => model.Id)-をデフォルト値に設定するにはどうすればよいですか。
次のように動作しますか?数値5は、デフォルト値を設定するためにテキストフィールドに渡すパラメーターです。
@Html.EditorFor(c => c.PropertyName, new { text = "5"; })
そのためのクリーンな方法は、作成したエンティティの新しいインスタンスをコントローラーに渡すことです。
//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" })
私が見つけたものは次のとおりです。
@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="" />
値対値。私はそれがあまりにも好きだろうかどうかわからない。
プロパティに値があるかどうか、そしてビューモデルでデフォルト値に設定せず、ビューでこのすべての猿の動作を回避するようにバインドしない場合、なぜコントローラーアクションをチェックインしないのですか?
ビューでデフォルト値を設定するのは適切ではありません。ビューは、表示作業を実行する必要があります。このアクションは、MVCパターンのイデオロギーを破ります。デフォルトを設定する適切な場所-コントローラクラスのメソッドを作成します。
より良いオプションは、ビューモデルでこれを行うことです
public class MyVM
{
int _propertyValue = 5;//set Default Value here
public int PropertyName{
get
{
return _propertyValue;
}
set
{
_propertyValue = value;
}
}
}
その後、あなたの意見で
@Html.EditorFor(c => c.PropertyName)
あなたが望むように動作します(値のデフォルト値がない場合)
@Html.EditorFor()
は、モデルに配置した属性を使用すべきではありませんか?
[DefaultValue(false)]
public bool TestAccount { get; set; }
私はちょうどこれをしました(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();
}
誰もこれの欠点を見ることができますか?
ViewBag
に押し込みます:
コントローラ:
ViewBag.ProductId = 1;
見る:
@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
これは私のために働いた
In Controlle
ViewBag.AAA = default_Value ;
表示中
@Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }
モデルクラスのコンストラクタメソッドで、必要なデフォルト値を設定します。次に、最初のアクションでモデルのインスタンスを作成し、ビューに渡します。
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);
}
これは私の作業コードです:
@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @Value = "123" } })
他の答えとの私の違いは、htmlAttributes配列内でValueを使用することです