1

私は MVC をまったく初めて使用するので、間違った用語を使用している場合はご容赦ください。プロジェクトとそのプロジェクト内のステップを表示するために、次の形式を使用するコントローラーを作成しています。

注: 新しく導入されたルート属性を使用する MVC5 を使用しています。

'/project/1/step/2
<Route("{ProjectID}/Step/{StepNumber:int}")>
Function ProjStep(ProjectID As String, StepNumber As Integer) As String
   Return String.Format("Project {0} Step {1}", ProjectID, StepNumber)
End Function

上記は期待どおりに機能します。しかし、ユーザーがステップではなくプロジェクトのみを指定する場合も処理したいと考えています。

'/Project/1
<Route("{ProjectID}")>
Sub Projuate(ProjectID As String)
   'Automatically start the user at step 555  
   'How do I send the user to the URL /Project/ProjectID/Step/555  
End Sub
4

2 に答える 2

2

構文が少しずれている場合はお詫びします - 私は C# で MVC を実行しています。

ステップ Action を直接呼び出すか、リダイレクトすることができます。

前者 (これにより、URL は /Project/1 のままになります):

Function Projuate(projectID As String)
  Return ProjStep(projectID,555)
End Sub

後者 (/Project/1/Step/555 になります):

Function Projuate(projectID As String)
  Return Redirect(Url.Action("ProjStep", new{ ProjectID = projectID, StepNumber=555})
End Sub

T4MVC が VB で動作するかどうかはわかりませんが、確認してみます。これは、これらの魔法の文字列を取り除き、URL を作成するための優れた拡張機能を取得できることを意味するためです。

編集注: Sub を Function に変更しました。

于 2013-12-10T14:58:20.597 に答える
0

ルートにデフォルト値を追加するのがおそらく最も簡単な方法です。

<Route("{ProjectID}/Step/{StepNumber:int=555}")>
Function ProjStep(ProjectID As String, StepNumber As Integer) As String
    Return String.Format("Project {0} Step {1}", ProjectID, StepNumber)
End Function

ps intの後に来ることを願っています-私が知っている限り、それは StepNumber=5:int かもしれません。

于 2014-01-14T15:20:19.610 に答える