1
MVC4를 사용하여 내 뷰에서 내 컨트롤러로 매개 변수를 가져 오는 데 문제가 있습니다.게시 된 매개 변수는 MVC4의보기에서 컨트롤러로 항상 비어 있습니다.
이 내 모델의 클래스 (이 코드에 대한 미안, 나는 처음에 이미지를 게시하고 싶어하지만 난 그에게 허용 될 수도 안돼서)입니다 :
public class Form
{
public Form()
{
this.Rows = new List<Row>();
}
public List<Row> Rows { get; set; }
}
public abstract class Row
{
protected Row()
{
this.Label = string.Empty;
this.Type = string.Empty;
}
public string Label { get; set; }
public string Type { get; set; }
}
public class SimpleRow : Row
{
public SimpleRow()
{
this.Value = string.Empty;
}
public string Value { get; set; }
}
public class CheckRow : Row
{
public CheckRow()
{
this.CheckedItems = new List<CheckedItem>();
this.Id = 0;
}
public List<CheckedItem> CheckedItems { get; set; }
public int Id { get; set; }
}
public class CheckedItem
{
public CheckedItem()
{
this.Title = string.Empty;
this.Checked = false;
}
public string Title { get; set; }
public bool Checked { get; set; }
}
내가 구축 관리 제 내 모델의 직렬화 인 입력 XML 파일에서 볼 수 있습니다. 그러나 내 문제는 내보기에서 일부 값을 변경하고 저장 단추를 누르면 내 컨트롤러 함수에서 빈 매개 변수가 반환됩니다.
컨트롤러 :
public class FormController : Controller
{
// GET: /Form/
#region Public Methods and Operators
[Authorize]
public ActionResult Index(HttpPostedFileBase file)
{
this.ViewBag.Title = "Formulaire Collaborateur";
if (file != null && file.ContentLength > 0)
{
return this.View(SerialisationHelper.DeserializeFromStream<Form>(file.InputStream));
}
return this.View();
}
[HttpPost]
[Authorize]
public ActionResult EmailForm(Form updatedForm)
{
Form f = updatedForm; // Empty instance of Form
return this.View("Index");
}
#endregion
}
그리고 내보기 :
@model Form
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("EmailForm", "Form", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<fieldset>
@foreach (var row in Model.Rows)
{
@Html.Partial("Row", row)
}
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<br />
}
이보기 내 모델 클래스에 관련된 다른 뷰를 호출합니다.
더 많은 코드가 필요하면 게시하겠습니다. 그리고 제발, 제 영어를 모국어로 사용합니다. 나는 원어민이 아닙니다.
플로랑은
을 사실 내가 사용 @ Html.Partial() 내 다른보기에서 나는 cshtml 코드를 가지고 있기 때문에. @ Html.EditorFor()를 넣을 때 레이블로 사용되는 속성의 이름을 텍스트 상자에있는 cshtml 프레젠테이션 대신 해당 속성의 값으로 설정합니다. 내 질문의 선명도를 위해이보기 코드를 게시하는 것이 더 좋을 것이라고 생각하면 할 수 있습니다. – PuK
나는 그것을 잘 만들 수 있었다. 덕분에 EditorForce는 마침내 해결책을 찾기 위해 나에게 리드를주었습니다. MVC4가 복잡한 데이터 모델로 어떻게 작동하는지에 대한 오해였습니다. 고마워요 – PuK
안녕하세요, 저는 StackOverflow 도구에 익숙하지 않습니다. 당신의 대답을 받아 들일 때 사과드립니다. 요즘 좀 바빴지만 곧 해결책을 게시 할 것입니다. – PuK