2015-07-09 2 views
0

У меня есть кнопка в WebGrid строке определяется как например:передать данные из строки в функции Javascript

grid.Column("Fault", header: "Fault", format: (item) => 
      { 
       if (item.Fault != null) 
       { 
        return new HtmlString(string.Format("<input type='submit' id='btnShowFault' onclick='ShowFaultMessage({0})' value='Fault' />", item.Fault.Message)); 
       } 

       return ""; 
      })) 

Это моя ShowFaultMessage функция:

function ShowFaultMessage(message) { 

    $.ajax({ 
     url: '/Home/Message/',  
     data: message, 
     type: 'POST', 
     contentType: 'application/json; charset=utf-8', 
     success: function (result) { 
      var w = window.open("/Home/Message", "Fault Message", "width=400, height=400"); 
      $(w.document.body).html(result.responseText); 
     } 
    }); 
}; 

Это не работает, хотя. Я знаю, что item.Fault верен, потому что мой блок If работает в определении столбца. Но когда я нажимаю кнопку, она генерирует неопределенное ссылочное исключение. Как я могу сделать эту работу. Я новичок в MVC, но что-то вроде этого очень просто с помощью xaml. Я отказываюсь верить, что это невозможно в бритве/mvc.

EDIT: Это мой метод действия для загрузки вид всплывающее окно:

public ActionResult Message(string faultMessage) 
    { 
     var model = new MessageViewModel { Message = faultMessage }; 
     return View(model); 
    } 

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

ответ

0

Перепишите возвращение быть что-то вроде этого

return new HtmlString(string.format("<input type='submit' id='btnShowFault' onclick='ShowFaultMessage({0})' value='Fault' />", item.Fault)); 

Вы должны использовать string.format, чтобы вставить значение в строку

+0

Так Fault является объектом. Сообщение - это свойство строки, которое мне нужно от него. Поэтому я сделал то, что вы показали, но сделал item.Fault.Message в файле string.format. Теперь я получаю сообщение об ошибке: Неподготовленная эталонная ошибка: «My Fault Message» не определена. Таким образом, item.Fault.Message явно передается, но у него есть проблема с ним. –

+0

Является ли C# или javascript, бросающим ошибку? – Casey

+0

Это должен быть javascript. Я бы сказал, что он бросает его на вызов JSON.stringify. Я не уверен, что вы пытаетесь сделать, но JSON.stringify ожидает объект, который затем превращается в строку json. – Casey

Смежные вопросы