2011-08-20 60 views
0

此解决方案,但我认为它可以更好的完成如何提高解决方案

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; 
    } 

回答

1

你的控制器应类型的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>" %> 

您在哪里创建显示。你甚至可以做到这一点,因为它可以更容易地包含在其他页面中。

2

而是在控制器生成的标记为什么不在JavaScript中做客户端?您的控制器不应该与标记

+0

不知道该怎么做...我知道它应该,但我不知道如何? 如果你能告诉我如何? – Ivan

+0

请给我任何例子,我该怎么做? – Ivan