ASP.NET MVC3-@ Html.EditorFor가있는 텍스트 영역


209

ASP.NET MVC3 앱이 있으며 뉴스 추가 양식도 있습니다. VS2010에서 기본보기를 만들 때 문자열 데이터에는 텍스트 입력 만 있지만 뉴스 텍스트에는 텍스트 영역이 필요합니다. 면도기 구문으로 어떻게 할 수 있습니까?

텍스트 입력은 다음과 같습니다 :

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

관련, 해당 EditorTemplate을 사용자 정의하는 방법에 대한 다른 질문에 대한 이 답변 을 참조하십시오 .
Jeroen

답변:


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 Alkan

@Jason은 CSS를 스타일링에 사용합니다.
Jo

DataAnnotationsftw! 감사합니다.

136

누군가 속성 추가 (특히 '행'과 '콜')에 대해 물었습니다. Razor를 사용하는 경우 다음을 수행하면됩니다.

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

그것은 나를 위해 작동합니다. '@'은 키워드를 이스케이프하여 변수 / 속성으로 취급하는 데 사용됩니다.


실제로-열 / 행이있는 텍스트 영역을 원한다면 TextAreaFor 대신 EditorFor를 사용해야 할 이유가 거의 없습니다. 누구나 여전히 EditorFor를 사용해야하는 이유가 있으며 열 / 행을 지정해야한다는 것을 알고 있습니까?
James Haug

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

6
이 방법은 데이터베이스 모델 수정과 관련이 있기 때문에이 방법이 더 좋습니다. 즉, EntityFramework를 사용하는 경우 기본 데이터베이스를 삭제하고 다시 만들어야합니다.
Ciaran Gallagher

6
해당 DataType Annotation은 Entity Framework에서 새로 고침을 강제하지 않습니다.
Tallmaris

9
@Ciaran :이 문장은 종을 울려 야합니다. UI를 수정하기 위해 데이터베이스 계층을 변경할 필요가 없습니다. 데이터베이스 객체에 매퍼 인 프리젠 테이션 객체가 있어야합니다. UI에서 데이터베이스 객체를 사용하지 마십시오.
Frederik Prijck

5
분명히 Frederik이 말하는 것은 DbContext에서 사용되는 클래스와 뷰 데이터 SEPARATE를 나타내는 클래스를 만드는 것입니다. DbContext 모델을 뷰에 전달하지 마십시오. 뷰 모델 클래스를 생성 한 다음 입력을받을 때 DB 모델에서 뷰 모델로 또는 그 반대로 관심 정보를 이동하십시오.
Jim Yarbro

3
@FrederikPrijck 동의하지 않지만 DRY 교장을 위반하지 않습니까? 한 클래스에서 다른 클래스로 모든 속성을 복사해야합니다. 당신이 발견 한 덜 평범한 것이 있습니까?
James Haug

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.