2011-08-20 108 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