홈>
이것에 대한 많은 예를 보았지만 아무런 효과가 없습니다. 뷰 모델 SomeDataViewModel의 전달을 증명/반증하기 위해이 예제를 작성했습니다.
드롭 다운 목록 데이터를 다시 게시하려고합니다. 모든 것이 정상적으로 작동하지만 TestViewModel의 OtherData 속성은 전달 된 수집을 반환하지 않습니다.
추가 시도 :
@Html.HiddenFor(m => Model.OtherData)
다시 이것은 다음과 같은 오류를 일으킨다;
The parameter conversion from type 'System.String' to type 'SomeDataViewModel' failed because no type converter can convert between these types
코드 :
ViewModels
TestViewmodel
public class TestViewModel
{
public TestViewModel()
{
OtherData = new List<SomeDataViewModel>();
}
public int Id { get; set; }
public String Name { get; set; }
public DateTime DoB { get; set; }
public int SelectedOtherData { get; set; }
public List<SomeDataViewModel> OtherData { get; set; }
public IEnumerable<SelectListItem> TolistData()
{
IEnumerable<SelectListItem> ret = OtherData.Select(i => new SelectListItem() { Text = i.Text, Value=i.Value });
return ret;
}
}
SomeDataViewmodel
public class SomeDataViewModel
{
public string Value { get; set; }
public string Text { get; set; }
}
보기
@model TestViewModel
@{
ViewBag.Title = "Home Page";
}
@using (Html.BeginForm("Index","Home"))
{
<div class="row">
<div class="col-md-12">
<br />
@Html.EditorFor(m => Model.Id)
<br />
@Html.EditorFor(m => Model.Name)
<br />
@Html.EditorFor(m => Model.DoB)
<br/>
@Html.DropDownListFor(m => Model.SelectedOtherData, Model.TolistData(), new { id = "OtherData" })
<p><a class="btn btn-default" href="http://go.microsoft.com/fwlink/?LinkId=301865">Learn more »</a></p>
</div>
</div>
<button id="dosomething" formmethod="post">Post</button>
}
컨트롤러
public ActionResult Index()
{
var model = new TestViewModel() {
Id = 99,
Name = "Billy",
DoB = DateTime.Now
};
model.OtherData.Add(
new SomeDataViewModel { Text = "Bob", Value = "1" });
model.OtherData.Add(
new SomeDataViewModel { Text = "Sally", Value = "2" });
return View(model);
}
[HttpPost]
public ActionResult Index(TestViewModel retModel)
{
if (ModelState.IsValid)
{
if (retModel.OtherData.Count() == 0)
{
var dud = true;
}
}
return View(retModel);
}
- 답변 # 1
- 답변 # 2
확실히 형식 변환 오류가 있습니다. SelectedOtherData는 int 유형이고 selectlistitem 값은 문자열 유형입니다
관련 자료
- c# - MVC umbraco 다시 게시
- OneLogin은 SAML RelayState를 다시 전달하지 않습니다
- couchdb - jQuery가 JSON을 게시하지 않음
- c# - MVC에서보기는 두 번째로 HTML을 렌더링 할 수 없습니다
- file upload - mvc 모델 fileupadload가 모델 데이터를 보내지 않습니다
- javascript - 잘못된 파일 경로로 인해 Net MVC가 파일을 업로드 할 수 없음
- forms : 버튼 유형이 라디오인 경우 내 ASP.NET MVC 양식이 게시되지 않는 이유는 무엇입니까?
- reactiveui - ViewModel이 해결되지 않았습니다
관련 질문
- MVC C#에서 체크박스의 열거형 값
- c# : MiniProfiler .Ignore() 확장 메서드는 프로파일링을 비활성화하지 않습니다.
- c# : 데이터를 클릭한 상태에서 모달을 부분 보기로 표시하는 방법은 무엇입니까?
- C#에 SqlCommand 매개변수 추가하기
- c# : I asp.net MVC에서 슬라이더를 생성하지만 슬라이더를 표시하지 않음(사진)
- javascript : ASP.NET MVC 5에서 ajax 호출 후 개별 오류 메시지 반환
- javascript : ValidateForm JS 함수에서 MVC 컨트롤러로 변경된 숨겨진 필드 값을 어떻게 전달합니까?
- 내 테이블에서 javascript 함수로 매개변수를 전달할 수 없는 이유
- c# : 타이머가 appstart에서 작동하지 않습니다. 어떻게 시작할 수 있습니까?
- ASP.NET MVC 4 프로젝트의 WIF 인증에서 특정 경로 제외
@Html.HiddenFor
를 사용하여 복잡한 데이터에 대해 숨겨진 입력을 렌더링 할 수 없습니다 도우미.단순한 유형으로 만 사용해야합니다. 배열이 있으므로 다음과 같이 작성해야합니다.
for
사용foreach
대신 루프POST
양식의 올바른 바인딩에 대한 맵핑과 동일해야하므로 .