3

たとえば、users.cshtml ビューでユーザーを作成し、それを ActionResult Create(RegisterModel um) に検証し、すべて問題がなければ、users.cshtml に戻りたいのですが、常に 1 つの JavaScript アラートまたは同様のものを使用するにはどうすればよいですか? 、アクションからの変数の値で。私はこれを行うことができますか?

私はそれを私の見解で持っています..

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
    <legend>Crear Usuario</legend>

     <div class="editor-label">
        Username:
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(model => model.UserName)
        @Html.ValidationMessageFor(model => model.UserName)
    </div>

    <div class="editor-label">
        Password:
    </div>
    <div class="editor-field">
        @Html.PasswordFor(model => model.Password)
        @Html.ValidationMessageFor(model => model.Password)
    </div>

            <div class="editor-label">
        Repite Password:
    </div>
    <div class="editor-field">
        @Html.PasswordFor(model => model.ConfirmPassword)
        @Html.ValidationMessageFor(model => model.ConfirmPassword)
    </div>
    </div>
    <p>
        <input type="submit" value="Crear" />
    </p>
</fieldset>

そして、これは私のコントローラーアクションで..

public ActionResult Create(RegisterModel um)
{

    if (um.Password == um.ConfirmPassword)
    {
        // Attempt to register the user
        MembershipCreateStatus createStatus;
        Membership.CreateUser(um.UserName, um.Password, um.Email, um.PasswordAnswer, um.PasswordQuestion, true, null, out createStatus);

        if (createStatus == MembershipCreateStatus.Success)
        {
            var alert = MembershipCreateStatus.Success.ToString();
        }
        else
        {
            ModelState.AddModelError("", ErrorCodeToString(createStatus));

            var alert = ErrorCodeToString(createStatus);
        }
    }
        //HERE IS WHERE I WANT TO RETURN TO /ADMIN/USERS BUT WITH AN ALERT WITH CONTAINING THE VALUE OF alert IN A JAVASCRIPT OR SIMILAR ALERT WINDOW

    return RedirectToAction("Users", "Admin"); ???????

このようなことはできますか?

4

2 に答える 2

8

アクションTempDataにリダイレクトする直前に、メッセージを内部に保存できます。Users

TempData["message"] = "some message that you want to display";
return RedirectToAction("Users", "Admin");

次に、Users.cshtmlビュー (Usersリダイレクト先のアクションによって返される) 内で、このメッセージの存在をテストし、次を表示しますalert

@if (TempData["message"] != null) {
    <script type="text/javascript">
        alert(@Html.Raw(Json.Encode(TempData["message"])));
    </script>
}
于 2012-05-07T09:48:44.837 に答える
0

ダリンの答えを試す代わりに、同じビューでエラーを表示しようとしてましViewBagPartial View

最後TempDataに、投稿中にメッセージを維持するために、を使用してみました。ここでは、ブートストラップを使用してエラーを表示しています

アクション方法:

[HttpPost]
public ActionResult RegDetail(User_table usob, FormCollection col)
{
 // some other code here
if (!sqlReader.HasRows)
{
TempData["message"] = "Contains some message";
return RedirectToAction("Registration");
}
return RedirectToAction("Index");
}

私の登録ビュー:

@if (TempData["message"] != null)
{
<link href="~/css/boostrap.css" rel="stylesheet" />
<script src="~/js/boostrap.min.js"></script>

<div class="alert alert-danger">

<a class="close" data-dismiss="alert">&times;</a>

<strong style="width:12px">Error!</strong> Thats wrong code no, try entering correct!

</div>

}

Tempdata を使用してさらに探索する必要がある場合は、Mr.James がブートストラップ メッセージを使用して説明している場所でこれを確認できます。

于 2015-04-13T16:02:10.743 に答える