模型:
public class FranqueadoModel
{
[DisplayName("Nome")]
[Required(ErrorMessage = "Por favor, digite seu nome!")]
[RegularExpression(@"^[^\s][a-zA-ZáéíóúÁÉÍÓÚàèìòùÀÈÌÒÙâêîôûÂÊÎÔÛãõñÃÕÑäëïöüÄËÏÖÜçÇ\'\s]{3,}$", ErrorMessage = "Digite um nome válido!")]
public string Nome { get; set; }
[DisplayName("E-mail")]
[Required(ErrorMessage = "Por favor, digite seu email!")]
[EmailAddress(ErrorMessage = "Digite um email válido!")]
public string Email { get; set; }
[DisplayName("Telefone")]
[DataType(DataType.PhoneNumber)]
[Required(ErrorMessage = "Por favor, digite seu número de telefone!")]
[RegularExpression(@"^\+?([0-9\s\-]{1,5})?(\(\d{2,5}\))?([0-9\s\-]{7,})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$" /* https://pastebin.com/Su8M9PRY */, ErrorMessage = "Digite um número válido!")]
public string Telefone { get; set; }
[DisplayName("Capital disponível")]
[Required(ErrorMessage = "Por favor, selecione o capital disponível!")]
public IEnumerable<SelectListItem> Capital { get; set; }
[DisplayName("Origem")]
[Required(ErrorMessage = "Por favor, selecione a origem!")]
public IEnumerable<SelectListItem> Origem { get; set; }
}
控制器:
public ActionResult Index()
{
var Capital = new List<SelectListItem>
{
new SelectListItem {Text = "de R$80.000 até R$100.000", Value = "1"},
new SelectListItem {Text = "de 101.000 até R$150.000", Value = "2"},
new SelectListItem {Text = "de R$151.000 até R$200.000", Value = "3"},
new SelectListItem {Text = "de R$201.000 até R$250.000", Value = "4"},
new SelectListItem {Text = "acima de R$250.000", Value = "5"},
};
var Origem = new List<SelectListItem>
{
new SelectListItem {Text = "Contatos Site", Value = "1"},
new SelectListItem {Text = "Direto Quiosque", Value = "2"},
new SelectListItem {Text = "Email Direto", Value = "3"},
new SelectListItem {Text = "Encontre Sua Franquia", Value = "4"},
new SelectListItem {Text = "Facebook", Value = "5"},
new SelectListItem {Text = "Formulário Site", Value = "6"},
new SelectListItem {Text = "Indicação", Value = "7"},
new SelectListItem {Text = "Sua Franquia", Value = "8"},
new SelectListItem {Text = "Telefone", Value = "9"},
};
ViewBag.Capital = new SelectList(Capital, "Value", "Text", Capital);
ViewBag.Origem = new SelectList(Origem, "Value", "Text", Origem);
return View();
}
[HttpPost]
public ActionResult Enviar(FranqueadoModel franqueado)
{
try
{
...
return Content("E-mail enviado com sucesso.");
}
catch (Exception e)
{
return Content("Não foi possivel enviar o e-mail.");
}
}
索引表:
@using (Ajax.BeginForm("Enviar", "Franqueado", new AjaxOptions { UpdateTargetId = "dvResult", HttpMethod = "Post", OnFailure = "sendFail", OnSuccess = "sendSuccess", OnBegin = "sendBegin", OnComplete = "sendComplete" }, new { @class = "contact-form", id = "frm-contato" }))
{
@Html.AntiForgeryToken()
<div class="form-group">
<div class="control-label col-sm-2">
@Html.LabelFor(x => x.Nome)
</div>
<div class="col-sm-10">
@Html.EditorFor(x => x.Nome, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(x => x.Nome, "", new { @class = "txt-failure" })
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
@Html.LabelFor(x => x.Email)
</div>
<div class="col-sm-10">
@Html.EditorFor(x => x.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(x => x.Email, "", new { @class = "txt-failure" })
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
@Html.LabelFor(x => x.Telefone)
</div>
<div class="col-sm-10">
@Html.EditorFor(x => x.Telefone, new { htmlAttributes = new { @class = "form-control telefone" } })
@Html.ValidationMessageFor(x => x.Telefone, "", new { @class = "txt-failure" })
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
@Html.LabelFor(x => x.Capital)
</div>
<div class="col-sm-10">
@Html.DropDownListFor(model => model.Capital, (IEnumerable<SelectListItem>)ViewBag.Capital, "-- Selecione --", new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Capital, "", new { @class = "txt-failure" })
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
@Html.LabelFor(x => x.Origem)
</div>
<div class="col-sm-10">
@Html.DropDownListFor(model => model.Origem, (IEnumerable<SelectListItem>)ViewBag.Origem, "-- Selecione --", new { @class = "form-control" })
@Html.ValidationMessageFor(x => x.Origem, "", new { @class = "txt-failure" })
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2"></div>
<div class="col-sm-10">
<input id="form_botcheck" name="form_botcheck" class="form-control" type="hidden" value="">
<button class="thm-btn2" type="submit">Enviar Mensagem</button>
</div>
</div>
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-10" style="padding: 23px;">
<div><h2 id="dvResult"></h2></div>
<div style="display: none" class="loading_message"><h2><i class="ld ld-ring ld-spin" style="animation-duration:1.56s; font-size:26px;"></i> Enviando mensagem<span id="loading-dots"></span></h2></div>
</div>
</div>
}
问题是,当我从三个文档中删除Capital
和Origem
类型的IEnumerable
对象时,一切都很完美,但是当我尝试发送时与他们的形式,我得到这个错误:
那么,我该怎样做才能在mvc中以ajax形式的下拉列表中发送所选项目的值?
答案 0 :(得分:0)
我发现了如何解决它。我以为我必须检查控制器内的所选项目,但表格已经发送了所选项目,所以我所要做的就是改变
public IEnumerable<SelectListItem> Capital { get; set; }
public IEnumerable<SelectListItem> Origem { get; set; }
到
public string Capital { get; set; }
public string Origem { get; set; }
答案 1 :(得分:0)
在模型中添加
public string CurrentCapital {get;组; }
public string CurrentOrigem {get;组; }
然后在视图中使用
@ Html.DropDownListFor(model =&gt; model.CurrentCapital ,(IEnumerable)ViewBag.Capital,“ - Selecione - ”,new {@class = “形式控制”})
@ Html.DropDownListFor(model =&gt; model.CurrentOrigem ,(IEnumerable)ViewBag.Origem,“ - Selecione - ”,new {@class = “形式控制”})