Как улучшить решение - PullRequest
       3

Как улучшить решение

0 голосов
/ 20 августа 2011

Это решение работает, но я думаю, что его можно сделать гораздо лучше

JQuery:

$('#addMessage').click(function () {
    var textMessage = $('#ticketMessage').val();
    var isInternal = $('#isInternal')[0].checked;
    var ticketID = $('#TicketID').val();
    $.ajax({
        url: '/Ticket/AddMessage',
        type: 'POST',
        data: { textMessage: textMessage, isInternal: isInternal, ticketID: ticketID },
        success: function (data) {
            var tbody = $('#allMessages').children()[0];
            tbody.innerHTML = tbody.innerHTML + data;
            $('#ticketMessage').val("");
            $('#isInternal')[0].checked = false;
        }
    });
});

контроллер

  public string AddMessage(string textMessage, bool isInternal, int ticketID)
        {


     Message message = new Message();
        message.IsInternal = isInternal;
        message.TicketMessage = textMessage;
        message.TicketID = ticketID;
        DateTime created=DateTime.Now;
        message.CreatedDateTime = created;
        message.PersonID = AppSecurity.Security.GetPersonID(Session);

        var personRepository =  new PersonRepository(_context);
        MessageRepository messageRepository = new MessageRepository(_context);
        messageRepository.Add(message);
        _context.SaveChanges();

        string relSrc = (personRepository.GetById((int)message.PersonID) as Employee).Image;
        string source = "";
        string isInternalStr = "";
        if (message.IsInternal) 
            isInternalStr = "Internal";
        if (message.Person is Employee) { source = relSrc != null ? "../../Images/TicketFiles" + relSrc.Replace('\\', '/') : "../../Images/TicketFiles/Employees/no-profile.png"; }
        String response = "<tr><td style=\"width: 25%\" valign=\"top\"><table><tr>" 
            + "<td><img src=\""+source+"\" alt=\"\" style=\"height: 60px\"/></td>" 
            + "</tr><tr><td>" 
            + AppSecurity.Security.GetUserFullName(Session)
            + "</td></tr><tr><td>"
            + created.ToString("dd.MM.yyyy") + " - " + created.ToString("HH:mm:ss")
            + "</td></tr></table></td><td style=\"width: 75%; padding:0px;\" valign=\"top\"><table style=\"width: 100%; height: 130px\" cellspacing=\"0\" cellpadding=\"0\">"
            + "<tr><td style=\"height: 20px; padding: 0px\">" + isInternalStr + "</td></tr><tr><td valign=\"top\">" + message.TicketMessage + "</td><tr></table></td></tr>";

        return response;
    }

Ответы [ 3 ]

2 голосов
/ 20 августа 2011

Мне кажется, вы можете извлечь большую пользу, используя jquery шаблоны

2 голосов
/ 20 августа 2011

Вместо генерации разметки в контроллере, почему бы не сделать это на стороне клиента в JavaScript?Ваш контроллер не должен беспокоиться о разметке

1 голос
/ 23 августа 2011

Ваш контроллер должен иметь тип ActionResult и, как сказал mr.nicksta, должен быть создан в виде.

public ActionResult AddMessage(string textMessage, bool isInternal, int ticketID)
{
    ...
    return View(message);
}

, а затем создать представление с тем же контроллером, строго типизированным с помощью Message.

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Message>" %>

Где вы создаете дисплей.Вы могли бы даже сделать это, поскольку частичное представление о нем может быть легче включено в другие страницы.

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