为什么我需要这个?
例如,当我想要将路由从/news/{id}
更改为path('news', {'slug': 'my-post'}
时,我需要替换所有调用path('news', {'post': post})
的地方。我希望传递像public static class MVCExtentions
{
public static string GetInputName<TModel, TProperty>(Expression<Func<TModel, TProperty>> expression)
{
if (expression.Body.NodeType == ExpressionType.Call)
{
MethodCallExpression methodCallExpression = (MethodCallExpression)expression.Body;
string name = GetInputName(methodCallExpression);
return name.Substring(expression.Parameters[0].Name.Length + 1);
}
return expression.Body.ToString().Substring(expression.Parameters[0].Name.Length + 1);
}
private static string GetInputName(MethodCallExpression expression)
{
MethodCallExpression methodCallExpression = expression.Object as MethodCallExpression;
if (methodCallExpression != null)
{
return GetInputName(methodCallExpression);
}
return expression.Object.ToString();
}
public static MvcHtmlString EnumDropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) where TModel : class
{
string inputName = GetInputName(expression);
var value = htmlHelper.ViewData.Model == null ? default(TProperty): expression.Compile()(htmlHelper.ViewData.Model);
return htmlHelper.DropDownList(inputName, ToSelectList(typeof(TProperty), value.ToString()));
}
}
这样的实体,然后改变我喜欢的路线。这将使我能够灵活地轻松更改路线。感谢。
答案 0 :(得分:0)
你无法将生命传递为param。 path
函数只接受字符串和数字参数,因为此函数根据路由生成url。
您如何将对象传递给浏览器网址栏?
/news/"{object": std_what_the_@?}
当然你可以制作your own twig function并传递对象来制作你的网址。
这样你可以检查你的对象有slug属性并选择你的路线和参数。无论如何你必须自己做。
我希望它有所帮助,但你的问题不明确......