ASP.NET MVC Html.TextBox для динамического значения - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть сценарий, в котором в определенном представлении я могу иметь 2 разных объекта одного типа [Customer].Первый называется Customer, другой называется CustomerApprove.Последний содержит изменение данных клиента, подлежащих утверждению.

Если объект CustomerApprove заполнен, я хочу, чтобы текстовое поле содержало это значение.В противном случае я хочу использовать обычное Customer значение объекта.

Я подумал о двух способах достижения этого.

  1. используйте инициализатор @value и встроенный оператор IF

    Html.TextBoxFor(m => Customer.City, new { @Value = somecondition ? CustomerApprove.City : Customer.City })

  2. Вызовите метод для Модели, чтобы определить, какой объект использовать.

    Html.TextBoxFor(m => Customer.City, new { @Value = Model.SomeMethodToGetTheValue() })

Какой подход лучше использовать или есть другие предложения?

Ответы [ 2 ]

4 голосов
/ 28 апреля 2011

Я бы порекомендовал вам использовать модель представления и заполнить соответствующее свойство в контроллере, чтобы в представлении вы могли просто:

@Html.TextBoxFor(x => x.CustomerCity)

В действии контроллера, основанном на значениях модели, вы заполните CustomerCity свойство модели представления соответственно.

1 голос
/ 28 апреля 2011

Как насчет создания модели представления как для клиента, так и для клиента.ViewModel предоставляет некоторые общие свойства (например, City), и вы просто возвращаете ViewModel из вашего контроллера.Я думаю о чем-то вроде этого:

public class CustomerViewModel
{
    public CustomerViewModel(Customer customer) 
    { 
        this.City = customer.City;
    }

    public CustomerViewModel(CustomerApprove customerApprove)
    {
        this.City = customerApprove.City;
    }

    public object City { get; set; }
}
...