2016-07-06 3 views
0

私はMVC.NET 5を使い始めています。私が達成したいと思っていることを頭の中に描いていますが、どうやってそこに到達するのか良いアイデアはありません。次のモデルを考えるクエリ文字列パラメータを追加せずに、インデックスアクションがフィルタリングされたリストを返すようにするにはどうすればよいですか?

  • 世界
  • 文字(世界への外部キーを持つ)

私は/ /キャラクターまたは/キャラクターに行くできるようにしたいと思います作成し、私の要求の世界の部分を自動的に処理するために必要な情報をコントローラに与えます。例えば、世界のページから/ Characterに行くためのリンクをクリックすると、コントローラーは特定の世界に属する文字のみを表示したいと思っていることが分かります。また、/ Character/Createに行くリンクをクリックすると、ユーザーがフォーム上で指定する必要なしに、特定の世界に属する文字を作成したいことを知りたいと思います。

世界のIDを/ Character?WorldId = xxxxのようなクエリ文字列で渡すことができますが、モデルの複雑なリレーショナルセットを使用する予定であり、クエリ文字列は非常に醜いものになります。

クエリ文字列のようにユーザーに表示せずにこのようなデータを転送するのに好ましい方法は何ですか?

答えて

1

クエリ文字列のようにユーザーに表示せずにこのようなデータを転送するのに好ましい方法は何ですか?

正直言って、それはPOSTリクエストによるものです。 POST情報は(クエリー文字列とは対照的に)ヘッダーに入れられます。

これを行うには、変更します

<a href="/Character/?WorldID=1">Click Me</a> 

へ:

<form action="/Character" method="POST"> 
    <input type="hidden" name="WorldID" value="1"> 
    <input type="submit" value="Click Me"> 
</form> 

私は/キャラクターのようなクエリ文字列を経由して世界のIDを渡すことができることを知っています?WorldId = xxxxしかし、私はモデルの複雑なリレーショナルセットを持つことを計画しており、クエリ文字列は非常に醜い非常に高速になります。

クエリ文字列を見栄え良くするために、もっと複雑にすることはありません。あなたが移動したときに今日見ているURLを見てみましょう。どこでも醜いクエリ文字列があります。

0

お使いのコントローラがこれらのようにする必要があります: 私はyou'reエンティティフレームワークを使用した場合は知らないが、私は

private EfDatabase db = new EfDatabase(); 
//Get Action to call list that you have stored in your database 
[HttpGet] 
public ActionResult Index(){ 
var model = db.WorldList.ToList(); 
return View(model); 
} 


[HttpGet] 
public ActionResult Create(){ 
return View(); 
} 
//World create action 
[HttpPost] 
public ActionResult Create(World world){ 
    db.Entry(world).State = EntityState.Add; 
    db.SaveChanges(); 
    return View(); 
} 

それを前提とし、あなたが

たい編集、より多くのコントローラとの隣にあるものを想定することができます

注:まだテストしていないので、ここで直接コード化しました

希望すると助かります!

関連する問題