は、私は、次のアクションを持っていました適切なT4MVCメソッドに都市パラメータを渡すとき。それを達成する方法はありますか?T4MVC ModelBinding
1
A
答えて
3
それはそのようCity
タイプのカスタムunbinder T4MVCモデルUnbinder機能(http://t4mvc.codeplex.com/documentation 3.1)、あなたが実装することができて、今可能です:
public class CityUnbinder : IModelUnbinder<City>
{
public void UnbindModel(RouteValueDictionary routeValueDictionary, string routeName, City city)
{
if (user != null)
routeValueDictionary.Add("cityAlias", city.Alias);
}
}
、その後に登録(のApplication_Startから)T4MVC:
ModelUnbinderHelpers.ModelUnbinders.Add(new CityUnbinder());
は、その後、あなたは、通常のURLを生成するためのMVC.Home.GetCityObjects(都市)を使用することができます。
2
私はそうは思わない。
あなたはパラメータなしのバージョンを使用して、手動でルート値を追加する必要があります。
GetCityObjects().AddRouteValue("cityAlias", city.cityAlias)
あなたがソースコードを見ると、あなたが生成されたメソッドだけで、パラメータ名「都市」を使用してcity
インスタンスを追加していることがわかります。
0
解決方法が見つかりました。私はT4MVCに次のハードコードされている:
<#foreach (var method in controller.ActionMethods) { #>
public override <#=method.ReturnTypeFullName #> <#=method.Name #>(<#method.WriteFormalParameters(true); #>) {
var callInfo = new T4MVC_<#=method.ReturnType #>(Area, Name, ActionNames.<#=method.ActionName #>);
<#if (method.Parameters.Count > 0) { #>
<#foreach (var p in method.Parameters) { #>
<# if (p.Name != "city") { #>
callInfo.RouteValueDictionary.Add(<#=p.RouteNameExpression #>, <#=p.Name #>);
<# } #>
<# else #>
<# { #>
callInfo.RouteValueDictionary.Add("cityAlias", city.Alias);
<# } #>
<#} #>
<#}#>
return callInfo;
}
私はそれが好きと言うことはできませんが、少なくともそれは私の場合で動作します。
David、もっと一般的な実装をT4MVCに導入するとどう思いますか?
関連する問題
- 1. T4MVCユニットテストジェネレータ
- 2. MVC ModelBinding - 負けアイテム
- 3. T4MVCですか?
- 4. T4MVCとResharper Navigation
- 5. T4MVCとHtml.BeginForm
- 6. ModelBindingをDropDownListForにInt32値で
- 7. MVC3 ModelBinding EditorTemplatesの問題
- 8. ModelBinding to DataTables注文データ
- 9. ASP.Net MVC FormCollection VS ModelBinding効率
- 10. T4MVC JavaScriptReplaceableUrlの使用
- 11. t4MvcとHtml.BeginFormスプリットコントローラとアクション名
- 12. T4MVC 2.6.65とUseLowercaseRoutes = trueエラー
- 13. .netのModelBinding複雑なオブジェクトのヘルプ
- 14. JSON.stringify()ModelBindingがnullモデルを返す
- 15. ModelBindingで使用されるViewBag
- 16. StructureMapでT4MVCを使用するには?
- 17. T4MVCとクエリパラメータのないパスだけ
- 18. T4MVC VB with Visual Studio 2010 Express Edition
- 19. T4MVCが生成さT4MVC.csとT4MVC1.cs
- 20. t4mvc actionresult文字列に変換
- 21. パラメータを持つT4MVCとAjaxメソッド
- 22. T4MVC @ Url.Actionは(MVC.Controller.Action())レンダリング "?エリア=" のQueryString
- 23. Json ModelBindingがMVC3のAjaxから機能しないRC2
- 24. パラメータでUpdateModelとModelBindingを使用した相違点
- 25. SelectListと選択した項目のModelBinding列挙値
- 26. ASP.NET MVC 4 ModelBindingの代わりに[]表記を使用
- 27. コントローラのアクションでT4MVCを使用してURLを生成する
- 28. T4MVCベースコントローラにデフォルトのコンストラクタがありません
- 29. T4MVCはポータブルアクションに対応していますか?
- 30. T4MVCで生成されたファイルと別の場所
それは原則的に良いと思う!残念ながら私はT4MVCで作業するためのリソースが限られているだけなので、これに取り組む時間を持つ貢献者を見つける必要があります。私はすぐに明らかな修正を加えてバグを修正しようとしています。 –
@DavidEbbo、私はそれを実装するための時間を見つけることができれば願っていますが、最初に実装するものについて議論したいと思います。同様のケースを一般化し、それらをカバーする最良の方法を見つけることは素晴らしいことです – SiberianGuy