0

こんにちは、私の質問は次のとおりです。2つの div があり、1 つの div には @ajax.beginform が含まれ、もう 1 つの div は空ですが非表示になっています。私が持っているアイデアは、フォームを含むdivがajaxリクエストを作成するために、コントローラーのアクションメソッドがモデルが有効かどうかを検出し、有効でない場合はフォームの同じコンテンツを再送信することです(コンテンツの1つの部分ビューフォーム) ただし、検証エラーがあります。モデルが有効かどうか、単純な「ありがとう」を含む別の部分ビューコンテンツを返し、divに表示されますが非表示になっている場合、フォームを持つdivを非表示にする必要があります。私はこれを行う方法がわからない??? 私の考えでは、@ajax.beginform の onSuccess イベントにはパラメーターとしてサーバーから返された html がありますが、サーバーから返されるコンテンツがわからない、つまり、どの div が表示されるかわかりません。お願い助けて。

PD: 質問が理解できない場合は、お知らせください。例を挙げます。

[[[[[[アップデート]]]]]]

私はモデルを持っています:

public class Message{

    public int MessageID { get; set; }

    [Required]
    public string From { get; set; }

    [Required]
    public string Content { get; set; }
}

私はコントローラを持っています:

public class MessageController : Controller{

    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult saveMessage(Message msg) {
        // (ModelState.IsValid)
        if (!msg.From.Contains("@")) {

            ModelState.AddModelError("From", "The mail must contain an @");
            return PartialView("DataMsg", msg);
        }

        return RedirectToAction("thanks");
    }

    public PartialViewResult thanks() {
        return PartialView();
    }
}

と私の見解:

Index.cshtml :

@model MvcApplication1.Models.Message

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@section scripts{
    <script>
        function successMsg(data) {
        // I want the "thank you" is displayed in the div with id="thanksUpdate" and not in #formUpdate
           $("#formUpdate").html(data);
        }
    </script>
}

@using (Ajax.BeginForm("saveMessage", 
    new AjaxOptions { HttpMethod="Post", OnSuccess="successMsg"})) {
    <div id="formUpdate">
        @Html.Partial("DataMsg", Model);
    </div>
}


<div id="thanksUpdate" style="display:none;">
</div>

データメッセージ.cshtml :

@model MvcApplication1.Models.Message

@Html.LabelFor(m => m.From)
@Html.EditorFor(m => m.From)
@Html.ValidationMessageFor(m => m.From)

@Html.LabelFor(m => m.Content)
@Html.EditorFor(m => m.Content)
@Html.ValidationMessageFor(m => m.Content)

<input type="submit" value="Send" />

そしてthank.cshtml :

<h2>Thank you</h2>

#formUpdate ではなく、id="thanksUpdate" の div に「ありがとう」を表示したい。どうすればそれができますか???

4

1 に答える 1