Html.DropDownListFor <> и сложный объект в ASP.NET MVC2 - PullRequest
4 голосов
/ 04 апреля 2010

Я смотрю на ASP.NET MVC2 и пытаюсь опубликовать сложный объект, используя новый синтаксис EditorFor.

У меня есть объект FraudDto, у которого есть дочерний объект FraudCategory, и я хочу установить этот объект из значений, которые публикуются в форме.

Размещение простого объекта не является проблемой, но я борюсь с тем, как обрабатывать сложные объекты с дочерними объектами.

У меня есть следующий родительский объект FraudDto, к которому я привязываюсь в форме:

public class FraudDto
{
    public FraudCategoryDto FraudCategory { get; set; }

    public List<FraudCategoryDto> FraudCategories { get; private set; }

    public IEnumerable<SelectListItem> FraudCategoryList
    {
        get
        {
            return FraudCategories.Select(t => new SelectListItem
            {
                Text = t.Name,
                Value = t.Id.ToString()
            }); 

        }

Дочерний объект FraudCategoryDto выглядит следующим образом:

public class FraudCategoryDto
{
    public int Id { get; set; }

    public string Name { get; set; }
}

В форме у меня есть следующий код, где я хочу привязать FraudCategoryDto к выпадающему списку. Представление имеет тип ViewPage:

<td class="tac">
    <strong>Category:</strong>
</td>
<td>
    <%= Html.DropDownListFor(x => x.FraudCategory, Model.FraudTypeList)%>
</td>

У меня тогда следующий код контроллера:

[HttpPost] 
public virtual ViewResult SaveOrUpdate(FraudDto fraudDto)
{
    return View(fraudDto);
}

Когда форма публикуется на сервере, свойство FraudCategory объекта Fraud имеет значение null.

Есть ли какие-то дополнительные шаги, которые мне нужны, чтобы подключить этот сложный объект?

1 Ответ

1 голос
/ 04 апреля 2010

Раскрывающийся список возвращает одно значение, поэтому в этом случае он пытается установить строку значений равной вашему сложному объекту. Если у вас неявное преобразование из строки в ваш объект, то, что вы пытаетесь сделать, вероятно, не будет работать.

Любые предложения о том, как обойти эту проблему, могут быть основаны на том, каков ваш метод хранения FraudCategoryDto объектов или как вы используете эту информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...