2010-07-11 2 views
0

У меня есть MVC ActionLink как так (который работает просто отлично)Правильный способ построения MVC ActionLink

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

Но так как это не «рекомендуется» делать манипуляции со строками в представлении, я задаюсь вопросом, как я мог бы создать пользовательский Html ActionLink для замены строки для меня?

ответ

1

Пользовательский ActionLink кажется неправильным местом для его выполнения, лучше передать Slug с помощью пользовательской View Model для представления с контроллера. Slug может быть свойством в Model View и логике строки, вызываемой в 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

+0

извините, у вас есть пример этого? Я все еще довольно новичок, когда дело доходит до MVC. –

+0

Я забыл упомянуть, что приведенный выше код используется в UserControl, а не в обычном представлении. –

+0

О, и Usecontrol загружается на главной странице, которая используется во всем сайте. –