私はこの状況を持っています:
モデルクラス:
public class ContatoModel
{
private string nome;
private string email;
private string telefone;
public ContatoModel()
{
}
public ContatoModel(string nome, string email, string telefone)
{
this.nome = nome;
this.email = email;
this.telefone = telefone;
}
public string Assunto { get; set; }
[Required(ErrorMessage = "Nome Obrigatório")]
public string Nome
{
get
{
return this.nome;
}
set
{
Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "Nome" });
nome = value;
}
}
[Required(ErrorMessage = "Email Obrigatório")]
public string Email { get; set; }
[Required(ErrorMessage = "Telefone Obrigatório")]
public string Telefone { get; set; }
public string Comentarios { get; set; }
}
次のビュー:
@using (Html.BeginForm("EnviarContato", "Contato"))
{
<div style="float: left; margin-bottom: 15px;">
@Html.Label("Assunto")<br />
@Html.DropDownList("ddlAssunto", assuntos, new {@class="dropdown"})
</div>
<div style="clear: both"></div>
<div style="float: left; margin-bottom: 10px;">
@Html.Label("Nome Completo", new { @class = "textfield" })<br />
@Html.TextBox("txtNome", "", new { @class = "textfield" })
@Html.ValidationMessage("Nome", "*")
</div>
<div style="clear: both"></div>
<div style="float: left; margin-bottom: 10px;">
@Html.Label("Email")<br />
@Html.TextBox("txtEmail", "", new { @class = "textfield" })
</div>
<div style="clear: both"></div>
<div style="float: left; margin-bottom: 10px;">
@Html.Label("Telefone")<br />
@Html.TextBox("txtTelefone", "", new { @class = "textfield" })
</div>
<div style="clear: both"></div>
<div style="float: left; margin-bottom: 10px;">
@Html.Label("Comentários")<br />
@Html.TextArea("txtComentarios")
</div>
<div style="clear: both"></div>
<div style="float: left; margin: 2px 20px 0px 255px;">
@*<input type="image" src="/Content/images/button_send2.gif" />*@
<input type="submit" value="Enviar" title="Enviar" />
</div>
}
そしてコントローラーのこのメソッド:
[HttpPost]
public ActionResult EnviarContato(FormCollection values)
{
try
{
string assunto = values["ddlAssunto"];
string nome = values["txtNome"];
string email = values["txtEmail"];
string telefone = values["txtTelefone"];
string comentarios = values["txtComentarios"];
model.Assunto = assunto;
model.Nome = nome;
model.Email = email;
model.Telefone = telefone;
model.Comentarios = comentarios;
EnviarContato();
return RedirectToAction("Index", new { envio = "OK" });
}
catch (ValidationException ex)
{
throw new ValidationException(ex.Message); //return RedirectToAction("Index", new { envio = "NOK" });
}
}
データ アノテーション クライアントの作業ができません。サーバーサイドで ValidationException が発生するのですが、バリデーションクライアントのメッセージを見たいのですが、うまくいきません。jQuery ファイルがまだマスター ページに読み込まれています。
もう 1 つの問題は、ビューに assunto 変数によって読み込まれるコンボがあり、それを検証に含めてユーザーに選択を強制する方法がわからないことです。
私のモデル クラスはデータ エンティティ用ではありません。フォームの値を受け取って検証し、問題がなければメールを送信するだけです。