【问题标题】:Proper way of building MVC ActionLink构建 MVC ActionLink 的正确方法
【发布时间】:2010-07-11 02:51:03
【问题描述】:

我有一个像这样的 MVC ActionLink(效果很好)

<%: Html.ActionLink(user.UserName, "Details", "Users", New With{.id = user.ID, .slug = Replace(user.UserName," ","-")}, nothing)%>

但由于不“推荐”在视图中进行字符串操作,我想知道如何构建自定义 Html ActionLink 来为我进行字符串替换?

【问题讨论】:

    标签: asp.net-mvc-2 html-helper partial-views actionlink


    【解决方案1】:

    自定义 ActionLink 似乎也是错误的地方,最好通过自定义视图模型将 Slug 从控制器传递到视图。 Slug 可以是 View Model 上的一个属性,以及在 setter 中调用的字符串逻辑。

    例如,将 UserViewModel 类添加到“ViewModels”文件夹。

    public class UserViewModel
    {
      public User User { get; private set; }
      public string Slug { get; private set; }
    
      public UserViewModel(User user)
      {
          Slug = Replace(user.UserName," ","-");
      }
    }
    

    然后在控制器中,将其传递给视图:

    return View(new UserViewModel(user))
    

    有关 ViewModel 使用的更多信息:

    MVC View Model Patterns

    【讨论】:

    • 对不起,你有这方面的例子吗?在 MVC 方面我还是个新手
    • 我忘了说,上面的代码是在 UserControl 中使用的,而不是在常规视图中。
    • 哦,Usecontrol 加载到整个站点使用的母版页中。
    • 如果它在 MasterPage 上,那么您可能需要考虑 RenderAction 而不是 RenderPartial,这样它将有自己的控制器,您可以在自定义 ViewModel 中传递。 blogs.intesoft.net/post/2009/02/…
    • 这不是和我的 Service Repository 中的 UserMetaData 类似吗?我有一个扩展默认项目的用户部分类。
    猜你喜欢
    • 2012-03-15
    • 2013-08-04
    • 2015-04-15
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多