2017-04-19 7 views
0

コントローラーcalle HomeのアクションがIndexであるとします。そのアクションに関連付けられたビューもIndexMVCでは、アクションにモデルプロパティを渡すと自動的にそのプロパティ値が取得されますか?

と呼ばれている今、私たちは@model ProjectName.Model.DataModelを使用してIndexビューでカミソリを使用して参照されDataModelと呼ばれるモデルを持って言うことができます。今すぐ下のクラスの宣言です:

モデルSomeActionが呼び出され

public class DataModel 
{ 
    int property1 {get; set;} 
    string ReturnURL {get ; set;} 
} 

コントローラが

public class HomeController : Controller 
{ 
    public ActionResult SomeAction(string returnUrl) 
    { 
     var model = new DataModel 
     { 
      ReturnURL = returnUrl; 
     } 

     return View(model); 
    } 
} 

、それは文字列が渡されます。私は文字列の値が空でないtutorialを読んでいました。私は、DataModelオブジェクトを直接渡したことは理解できますが、ただ1つのプロパティ....私はそれを取得しません(プロパティと同じ名前なのでプロパティを知っています...大文字小文字は尊重されません)

アクションにモデルプロパティを渡す場合、私は尋ねた理由を自動的にそのプロパティの値が取得するチュートリアル、単一の文字列パラメータは、チュートリアルの一部6で LoginGetRedirectUrlであることを使用したアクション...

。または、パラメータ文字列returnUrlがその値をどこから取得したのかを親切に説明できますか?

+0

'returnUrl'はクエリ文字列から取得されます。 'http:// domain:port/controller/action?returnUrl =/home'のようになります。 MVCのモデルバインディングについてお読みください。 –

+0

@AndriiLitvinovは、クエリ文字列を引き起こすアクションがジェネリックパラメータ 'returnUrl'を持ち、ジェネリックパラメータがコントローラ/アクション/ビューの任意のアクションで渡され/クエリ文字列を引き起こすことができると言っていますか? – Bloomberg58

+0

いいえ、認証後に認証されていない要求に対してのみ表示されます。 –

答えて

1

にreturnurlの値は、モデルバインダーから来ています。ルーティング設定の方法によって異なります。

それはどちらかのクエリ文字列のようになります。私はそれはあなたのルートの設定に依存して言うと同様

http://siteroot/someaction?returnUrl=YOUR_RETURN_URL_HERE

またはルート

http://siteroot/someaction/YOUR_RETURN_URL_HERE

経由。また、returnUrlはhttpでエンコードする必要があることに注意してください。

0

あなたは[Authorize]属性でマークされたアクションにアクセスしようとしますが、それはあなたがConfigurationクラスに設定されているログインページにリダイレクトするにはログインしていない場合、それはあなたにcontroller/action/ URLを供給しますが、あなたができるパラメータとして、コード化されています

An example image here

関連する問題