ASP.NET MVC 2 - действительно ли стоит создать пользовательский образцовый редактор связей для этого сценария?

Хорошо у меня есть сложная модель представления формы как это:

public class TransactionFormViewModel
{
    public Session SessionRecord { get; private set; }
    public IEnumerable<Resource> ResourcePerSessionRecord { get; private set; }
    public Person PersonRecord { get; private set; }
    public decimal SubTotal { get; private set; }

    public TransactionFormViewModel(Person patient, Session session, IEnumerable<Resource> resourcePerSession)
    {
        this.PersonRecord = person;
        this.SessionRecord = session;
        this.ResourcePerSession = resourcePerSession
        this.SubTotal = CalculateSubTotal();
    }

    private decimal CalculateSubTotal()
    {
        return ResourcePerSession.Sum(x => x.Cost);
    }
}

Это - моя Модель, которую я использую в представлении, которое (представление) похоже на это:

        <A table that shows Person data></table>
        <A table that shows a review of the Session> </table>

       <!-- the submit button i need to complete the transaction -->
       <% using (Html.BeginForm("PayNow", "Session")) 
       {  %>
            <div id="trans-ses-footer">
                <%:Html.HiddenFor(x => x.SessionRecord.SessionID) %>
                <%:Html.HiddenFor(x => x.SessionRecord.PersonID) %>
                <%:Html.HiddenFor(x => x.SubTotal) %>

                <input type="submit" value="Pay" />
            </div>        
    <% } %>

</div>

Контроллер похож на это: [HttpPost] ActionResult PayNow общественности () {//транзакция Транзакции модели транзакции = новая Транзакция ();

        transaction.SessionID = int.Parse(Request.Form["SessionRecord.SessionID"]);
        transaction.PersonID = int.Parse(Request.Form["SessionRecord.PersonID"]);
        transaction.TotalCost = decimal.Parse(Request.Form["SubTotal"]);
        transaction.Paid = true;

        _sessionRepository.SaveTransaction(transaction);
        TempData["TransactionMessage"] = "The transaction was saved successfully.";

        return View();
    }

Я использую Запрос. Форма для получения значений, в которых я нуждаюсь для транзакции. Если я хочу сделать это как это:

Public ActionResult(Transaction transaction)
{
  if(ModelState.IsValid) 
       _transactionRepository.SaveTransaction(transaction) 
  etc...
}

я должен создать пользовательского образцового участника торгов, которого я предполагаю. Действительно ли это стоит проблемы? Я получу что-нибудь в производительности или в каком-либо другом аспекте? Или Вы знаете какой-либо другой метод, что я могу сделать такого рода вещь? Я не знаю, как выразить это правильно этот сценарий, таким образом, я ничто не мог найти релевантным... Заранее спасибо.

1
задан goldenelf2 30 April 2010 в 13:43
поделиться

1 ответ

На мой взгляд, всегда стоит создавать настраиваемую подшивку модели, если подшивка по умолчанию не может справиться с вашим делом. В любом случае он будет делать именно то, что вы делаете в своем действии, поэтому лишнего кода не будет (только дополнительный класс). И вы избавитесь от зависимости от httpcontext и получите более понятный метод действий.

2
ответ дан 3 September 2019 в 00:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: