2

この機能にアプローチする方法について、(いつものように) アドバイスを求めています。ユーザーが入力を含むページをレコードに保存することのみを目的として送信する編集ボックスがあるページがあります。しかし、(重複を避けるために)やりたいことは、最初にテーブルを検索して SIMILAR レコードを探し、同様のレコードがある場合は、それを(同じビューで)ユーザーに返し、尋ねたいと思いますか?新しいレコードを保存する代わりにこれらのレコードを使用するには?

だから私は見解を持っています

<script type="text/javascript">
   $(document).ready(function(){
      $(function(){
         $('.submit-link').click(function(){
             /** not sure how to handle this **/
         });
      });
   });
</script>


<% using(Html.Beginform()){%>
   <%: Html.TextBoxFor(model => model.Name)
   <button type="submit" value="register name" class="submit-link">Submit</button>
<%}%>

<div class="search-results"></div>

私のコントローラー

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


[HttpPOst]

public ActionResult New(FormCOllection collection){
   try{
    Profile profile = new Profile();
    TryupdateModel(profile);
    context.Profile.Add(profile);
    context.SaveChanges();
   }
catch(Exception ex)
{
}
   return View();
}

したがって、私のジレンマは、次のことかどうかわかりません。

  1. 「新規」アクションに投稿してから、その途中で検索を行う必要があります。レコードが存在する場合は、json 形式のデータを返して、jquery を使用してシームレスに表示できるようにする必要があります。それ以外の場合は、保存してから同じページにリダイレクトします。

  2. または、検索を処理するjsonアクションに全体を向けるだけで、何かが見つかった場合は同じページに戻り、そうでない場合は保存してから戻ります。

後者に関する私の問題は、GETアクションが必要になることです。これは、コントローラーにgetがあり、次に別のJSonタイプのメソッドがある場合の良い習慣であるかどうかはわかりません。それは理にかなっていますか?

または、別のタイプの解決策を教えてくれる人が必要なだけかもしれません

どんな助けでも大歓迎です!本当にありがとう!!

4

3 に答える 3

2

jQuery Autocomplete プラグインを使用して、既存のアイテムをユーザー タイプとして設定しないでください。したがって、ユーザーが既存のものを入力すると、オートコンプリートにオプションが表示され、ユーザーはそれを選択します。ユーザーが既存のものから (オートコンプリートの提案から) 選択すると、新しいものとして保存する必要がないことがわかります。

これにより、ユーザーの作業が軽減されます

于 2012-08-15T13:04:53.730 に答える
1

1bはどうですか?常にリダイレクトし、サーバー側をチェックします。類似するものが存在する場合はページにリダイレクトし、類似のものを表示します。そうでない場合は、保存後のページにリダイレクトします。このようにして、1 つのシナリオを別のシナリオから切り離し、維持しやすくします。conだけが余分な往復です

于 2012-08-21T15:00:20.157 に答える
1

私なら前者だけにします。レコードが存在する場合は Json を返し、そうでない場合はリダイレクトを返します。同じメソッドで複数の種類の ActionResult が返されることに問題はありません。ずさんだと思う人もいるかもしれませんが、私はそうではありません。

私は多くのプロジェクトでこのようなことを見てきました:

[HttpPost]
public ActionResult MethodName()
{
    ....
    if(error)
        return Json(new { Error = "Error!" });
    else
        return RedirectToAction("NextStep");
}
于 2012-08-09T22:37:12.447 に答える