質問

どのActionがコントローラーアクションから戻ることを決定するとき、私は長いIF-ELSEとは対照的に、三元演算子を使用することにしました。これが私の問題です...

このコードは機能します

return
    ModelState.IsValid ?
    (ActionResult) RedirectToAction("Edit", new { id = id }) :
    View(new EditViewModel(updatedCategory));

しかし、これはそうではありません

return 
     ModelState.IsValid ?
     RedirectToAction("Edit", new { id = id }) :
     View(new EditViewModel(updatedCategory));

if-elseを使用している場合、明示的なキャストを行う必要はありません。さらに、RedirectToAction()とView()の両方がActionResult Derivativeを返します。

私はこのコードの告知が好きですが、そのキャスティングは正しくないようです。誰かが私を啓発できますか?

これは明らかだと確信していますが、EditViewModelは編集アクションのビューモデルであり、UpdatedCategoryはEF4オブジェクトです。しかし、これが問題に関連しているとは思わない。

わかりました...私は自分がやっていることは不要であることに気付きました。なぜなら、更新されたCategoryを使用して編集アクションに戻っているので、モデルが有効であることを確認する必要はありません。誰かが助けることができるかどうか、質問に対する答えを知りたいと思っています。

役に立ちましたか?

解決

それは、?:オペレーターを使用するときの議論が、たとえば条件で、自分の間で変換できる必要があるためだと思います。 X:Y xをyまたはyに変換できる必要があります。次に、結果のタイプは2つの中で最も特異的ではありません。したがって、xがオブジェクトとYA文字列である場合、オブジェクトに文字列をキャストできれば、結果はオブジェクトのタイプになります。

例では、xはredirecttorouteresultであり、yはviewresultです。 RedirectTorouteresultを視聴に変換することも、その逆も同様です。君は できる ただし、両方をアクションに変換します。そのため、アクションが実行されると機能すると、Xのタイプはアクションが実行され、Yはアクションに変換でき、全体的な結果は操作の型に変換できます。

私がそこに正しく説明したことを願っています...私は自分でそれを使用することはめったにないので、私は?

他のヒント

データ型は、割り当て変数でまったく同じでなければならず、ここでの両方のリターンタイプは、私が考えることができる最も単純な例です。

int originalValue = 10;
int? value = (originalValue != 10) ? null : originalValue;

//Which is very easily fixed with type casting as you have done

int? value = (originalValue != 10) ? null : (int?)originalValue;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top