내가 컨트롤러에보기에서 데이터를 보낼 때이 문제가,ASP.NET MVC가 - 유형의 어떤을 ViewData 항목이 없다 '는 IEnumerable <SelectListItem>'키 '파이스'
내보기가 그 :
를@model Projeto_P1.Models.Cidade
@{
ViewBag.Title = "Cadastro de Cidades";
}
@using (Html.BeginForm("AddCidade", "Geral", FormMethod.Post))
{
<div class="container">
<fieldset>
<div>
@Html.Label("Cidade")
@Html.EditorFor(model => model.Nome)
</div>
<div>
@Html.Label("País")
@Html.DropDownListFor(model => model.Pais, (SelectList)ViewData["pais"], "Selecione", new { id = "PaisID"})
</div>
<div>
@Html.Label("Estado")
@Html.DropDownList("Estado", Enumerable.Empty<SelectListItem>(), "Selecione")
</div>
<br />
<input type="submit" value="Cadastrar" />
</fieldset>
</div>
}
<script type="text/javascript">
$(document).ready(function() {
$("#PaisID").change(function() {
$.ajax({
url: "ListaEstados",
type: 'POST',
data: { ID: $(this).val() },
datatype: 'json',
success: function (data) {
var elements = "";
$.each(data, function() {
elements = elements + '<option values="' + this.id + '">' + this.Nome + '</option>'
})
$('#Estado').empty().attr('disabled', false).append(elements);
}
});
});
});
</script>
내 컨트롤러에는 국가의 SelectList를 보내는 AddCidade() 액션이 있습니다. 액션을 수행하는 ListaEstados는 상태를 반환하며, 선택한 국가의 아약스를 기반으로합니다. 이 모델의 Pais
속성 이름과 일치하므로
public ActionResult AddCidade()
{
ViewData["pais"] = new SelectList(Util.getPais().ToList(), "ID", "Nome");
return View();
}
[HttpPost]
public ActionResult ListaEstados(String id)
{
return Json(Util.getEstados(id));
}
[HttpPost]
public ActionResult AddCidade(Cidade c)
{
c.Cadastrar(c);
return View();
}
}
'pais' 키의 이름이 모델의'Pais' 속성 이름과 일치하기 때문에 이름 바꾸기 e :'ViewData [ "anyOtherKeyName"] = ...','... (SelectList) ViewData [ "anyOtherKeyName"] ...'. – Zabavsky
또한 [HttpPost] 메소드에서 뷰 데이터를 다시 초기화하거나 리턴 된 View()를 대체해야합니다. return과 함께 RedirectToAction ("AddCidade"); – B2K
안녕하세요, 당신을 위해 TSC가 작동하지만, 지금은 다른 문제가 있습니다. 데이터를 보낼 때 컨트롤러의 데이터를 드롭 다운에 Estado에서 HTML 코드가 다음과 같이 유지합니다. 반환하는 상태에서 SQL 쿼리에 ID를 넣습니다. – user3670112