Я довольно новичок в MVC и Razor (да, стыдно за меня), У меня есть страница с 2 частичными видами и 1 форма ajax с одним из частичный вид с динамически созданным списком, обновляющим значения (и сбоя) к другому частичному представлению, по дизайну он отображает первое сообщение списка.ajax форма с частичным представлением с динамически созданным списком, обновляющим значения на другом частичном представлении
Проблема заключается в том, что я нажимаю кнопку на одном из элементов списка («Ver» в «_ListaMensajes»), вместо того, чтобы показывать детали сообщения в нижней части страницы (_detalleMensaje), он делает ничего (нет звонков на контроллере или что-то еще)
Я следил за несколькими учебниками и рабочими проектами, чтобы это сделать, и это меня смутило, я не знаю больше, если этот код имеет смысл, пожалуйста, небольшую помощь.
Благодаря
PD: Я использую MVC 5.1 (по NuGet консоли) и реферирования: jquery.unobtrusive-ajax.min.js
Контроллер:
public ActionResult DetalleMensaje(int Id_Mensaje) {
V_Sedd_Mensaje oV_Sedd_Mensaje = oI_V_Sedd_Mensaje.Recuperar_V_Sedd_Mensaje_PorCodigo(Id_Mensaje);
return PartialView("_DetalleMensaje", oV_Sedd_Mensaje);
}
страница:
<div class="col-md-10">
<fieldset class="dhhBorder">
<legend class="dhhBorder">Lista de Envíos</legend>
<div class="form-group">
<div class="row">
<div class="col-lg-1">Evento</div>
<div class="col-lg-2">@Html.DisplayFor(x => x.Descripcion)</div>
<div class="col-lg-1">Fecha Envio</div>
<div class="col-lg-1">@Html.DisplayFor(x => x.Fecha_Envio_Short)</div>
<div class="col-lg-1">
<button type="button" title="Editar" data-url="/Envios/[email protected](x => x.Id_Envio_Empresa)" class="btn btn-default btn-xs modalMTC"><span class="glyphicon glyphicon-paperclip"></span></button>
</div>
</div>
<div class="row">
@using (Ajax.BeginForm("DetalleMensaje", "Envios", new { @id = "FormCabecera" },
new AjaxOptions()
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "SeccionMensaje"
}))
{
<div class="col-md-10">
<fieldset class="dhhBorder">
<legend class="dhhBorder">Lista de Envíos</legend>
<div class="row">
<div class="col-md-12" id="SeccionListado">
@Html.Partial("_ListaMensajes", @Model.lV_Sedd_Mensaje)
</div>
</div>
</fieldset>
</div>
}
<div class="col-md-10" id="SeccionMensaje">
@Html.Partial("_DetalleMensaje", Model.oV_Sedd_Mensaje)
</div>
</div>
</div>
</fieldset>
</div>
_ListaMensajes:
@using aseDGRAIC.Helpers
@model List<beDGRAIC.V_Sedd_Mensaje>
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover table-responsive">
<thead class="small">
<tr class="text-center">
<th class="text-center col-lg-1" scope="col">Orden</th>
<th class="text-center col-lg-2" scope="col">Tipo</th>
<th class="text-center col-lg-4" scope="col">Asunto</th>
<th class="text-center col-lg-1" scope="col">Adjunto</th>
<th class="text-center col-lg-2" scope="col">Fecha/Hora</th>
<th class="text-center col-lg-2" scope="col">Acciones</th>
</tr>
</thead>
<tbody>
@if (Model != null)
{
var cuenta = 1;
foreach (var x in Model)
{
<tr>
<td class="text-center">@cuenta</td>
<td>@x.Tipo</td>
<td>@x.Asunto</td>
@if (x.Existen_Adjuntos != 0) {
<td><button type="button" title="Editar" data-url="/Envios/[email protected]_Mensaje" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-paperclip"></span></button></td>
} else {
<td> </td>
}
<td>@x.Fecha</td>
<td class="text-center">
<button type="submit" title="Ver" data-url="/Envios/[email protected]_Mensaje" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-comment"></span></button>
</td>
</tr>
}
}
</tbody>
</table>
</div>
и _detalleMensaje:
@model beDGRAIC.V_Sedd_Mensaje
<div class="panel">
<div class="row">
<div class="col-md-12">
<div class="row form-horizontal">
<div class="col-sm-6 col-md-6">
<div class="form-group">
<label class="col-md-3 control-label small">Asunto:</label>
<div class="col-md-9">
@if (Model.Id_Mensaje != 0)
{
@Html.TextBoxFor(x => x.Asunto, new { @class = "form-control input-sm", @disabled = "disabled" })
}
else
{
@Html.TextBoxFor(x => x.Asunto, new { @class = "form-control input-sm" })
}
</div>
</div>
</div>
</div>
<div class="row form-horizontal">
<div class="col-sm-6 col-md-6">
<div class="form-group">
<label class="col-md-3 control-label small">Mensaje:</label><br />
<div class="col-md-9">
@if (Model.Id_Mensaje != 0)
{
@Html.TextBoxFor(x => x.Mensaje, new { @class = "form-control input-sm", @disabled = "disabled" })
}
else
{
@Html.TextBoxFor(x => x.Mensaje, new { @class = "form-control input-sm" })
}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel-footer">
<div class="btn-group">
@if (Model.Id_Mensaje == 0) {
<button id="btnGrabar" type="button" class="btn btn-success btn-sm">Enviar</button>
}
</div>
</div>
EDIT: Сделаны некоторые изменения в коде на основе комментарии ниже, но ведет себя так же
Есть ли способ, которым ошибка в моем макете мешает jquery? В: '$ (window) .on ('load', function() { $ ('. Selectpicker'). Selectpicker(); <--- здесь if (globalLog == '0') { $ ('.toggleButtonMenu'). click(); } }); 'I got:" Uncaught TypeError: undefined не является функцией " – culebrin
Пробовал с другой компоновкой без ошибок и ведет себя одинаково ... – culebrin
У вас есть форма ajax, но не кнопка отправки. Ваша часть внутри формы ('_ListaMensajes') не отображает никаких элементов управления, поэтому в любом случае ничего не будет представлено. И вы, цикл, генерируете недопустимый html (дубликаты атрибутов id). Тогда ваш второй частичный '_detalleMensaje', который имеет некоторые элементы управления, находится вне формы, поэтому неясно, что вы на самом деле пытаетесь сделать здесь. –