0

私はこの状況を持っています:

モデルクラス:

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 変数によって読み込まれるコンボがあり、それを検証に含めてユーザーに選択を強制する方法がわからないことです。

私のモデル クラスはデータ エンティティ用ではありません。フォームの値を受け取って検証し、問題がなければメールを送信するだけです。

4

1 に答える 1

0

データ注釈クライアントの作業ができません。ValidationException はサーバー側で発生しますが、検証クライアント メッセージを見たいのですが、うまくいきません。jquery ファイルがまだマスター ページに読み込まれています。

  1. ファイルjquery.validate.jsjquery.validate.unobtrusive.jsページに含める必要があります。
  2. <add key="UnobtrusiveJavaScriptEnabled" value="true" />Web.Config にある必要があります。

もう 1 つの問題は、ビューに assunto 変数によって読み込まれたコンボがあり、それを検証に含めて、ユーザーに選択を強制する方法がわからないことです。

Options値が空の 1 つがDropDownList. たとえば、「--1 つ選択--」。

于 2013-08-24T15:52:39.177 に答える