6

私が見たASP.NETMVCの例のほとんどは、ユーザーがオブジェクト(またはオブジェクトのコレクション)を表示してから、そのページからユーザーが入力したフォームを表示するページに移動するシナリオを示しています。適切な入力でフォームを送信すると、ユーザーはオブジェクト(またはリスト)を表示するページにリダイレクトされ、ユーザーは変更が成功したことを確認できます。

ビジネスルールごとにビューまたはリストページがないシナリオに遭遇しました。

ASP.NET MVCでのこのシナリオの良いアプローチは何ですか?

昔はClassicASPとASP.NETを使用して、入力を処理してから、成功メッセージまたはエラーのあるフォームをすべて同じページからユーザーに表示していました。これは、ベストプラクティス(SRP、ビューにロジックがないなど)に反しているようです。

簡単な方法の1つは、変更が成功したことをユーザーに通知する新しいページにリダイレクトすることですが、その後、ユーザーはいつでもそのページにアクセスできます。これから保護するためのロジック(つまり、tempdata)を入れ始めると、ソリューションが汚れ始めます。

ランディングページにリダイレクトできましたが、確認がありません。エンドユーザーがランディングページに戻ったときに確認を表示するメッセージングシステムに頼ることができるでしょうか。

4

2 に答える 2

3

ShowMessage メソッドを持つ基本コントローラーを使用します。このメソッドは、表示するメッセージ (または必要に応じてリソース キー) と、メッセージの種類 (成功、エラー、通知など) を示す列挙を受け取ります。アクションに戻る前に、適切なメッセージで ShowMessage を呼び出します。

ShowMessage("A nice message here.", MessageType.Success);

次に、マスター ページで、メッセージがある場合にメッセージを表示する共有部分ビューをレンダリングするヘルパー メソッドを呼び出します。メッセージはTempData固定キーで格納されます。ブループリント css フレームワークに表示されるスタイルを使用して、タイプに応じてメッセージを表示できます。

ここにいくつかのコードがあります:

public void ShowMessage(string message, MessageType messageType)
{
    var messageViewModel = new MessageViewModel(message, messageType);
    TempData["Message"] = messageViewModel;
 }

部分的なビュー:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Models.MessageViewModel>" %>
<%var className = Model.MessageType.ToString().ToLower(); %>
<div class="<%=className%>">
    <%=Html.Encode(Model.Message)%>
</div>

フィルターを使用するなど、より良いアプローチがあると確信していますが、このアプローチは私にとって非常に役立ちます。

于 2010-10-05T14:13:30.230 に答える
1

ビューデータに何かを入れて、ページで次のようなことを行うことができます

<% if (viewdata["success"] != null){%>
<script>
$("#successDialog").dialog('open');
</script>
<%}%> 

あなたのユーザーには成功を知らせるポップアップが表示されます http://jqueryui.com/demos/dialog/

于 2010-10-05T13:49:52.263 に答える