Nice programing

Html.EditorFor 기본값 설정

nicepro 2020. 10. 25. 13:02
반응형

Html.EditorFor 기본값 설정


신인 질문. 매개 변수가 작성보기에 전달되었습니다. 기본값으로 필드 이름을 설정해야합니다. @ Html.EditorFor (model => model.Id) 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로 작동합니다 (값이 일반적으로 setter에서 사용되는 키워드라는 가정). 하한 대 상한 값

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

작동하지 않는다

귀하의 코드는 결국 다음과 같이 보입니다.

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

가치 대 가치. 내가 너무 좋아할지 모르겠다.

속성에 값이 있는지 여부와 뷰 모델에서 기본값으로 설정하지 않은 경우 컨트롤러 동작을 확인하고이 모든 원숭이가 뷰에서 작동하지 않도록 바인딩하도록하는 것이 어떻습니까?


보기에서 기본값을 설정하는 것은 옳지 않습니다. View는 그 이상이 아닌 디스플레이 작업을 수행해야합니다. 이 행동은 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)

원하는 방식으로 작동합니다 (값 기본값이 없으면)


나는 방금 이것을 (Shadi의 첫 번째 대답)했고 그것은 대우를 작동합니다.

    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();
    } 

누구든지 이것에 대한 단점을 볼 수 있습니까?


@Html.EditorFor()모델에 넣은 속성을 사용해야하지 않습니까?

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

안으로 밀어 넣으십시오 ViewBag:

제어 장치:

ViewBag.ProductId = 1;

전망:

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

이것은 나를 위해 일했습니다.

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 배열 내부의 값을 사용하는 것입니다.


이것은 나를 위해 일했습니다.

컨트롤러에서

*ViewBag.DefaultValue= "Default Value";*

보기에서

*@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter a Value", @Value = ViewBag.DefaultValue} })*

참고 URL : https://stackoverflow.com/questions/6062528/html-editorfor-set-default-value

반응형