Saudações amigos,
tenho esse código onde construo o ActionLink:
public static MvcHtmlString ActionImage(this HtmlHelper html, string imagePath, string action, string controllerName, object routeValues, object atributos, string title)
{
var url = new UrlHelper(html.ViewContext.RequestContext);
// build the <img> tag
var imgBuilder = new TagBuilder("img");
imgBuilder.MergeAttribute("src", url.Content(imagePath));
imgBuilder.MergeAttribute("title", title);
string imgHtml = imgBuilder.ToString(TagRenderMode.SelfClosing);
// build the <a> tag
var anchorBuilder = new TagBuilder("a");
anchorBuilder.MergeAttribute("href", url.Action(action, controllerName, routeValues));
anchorBuilder.MergeAttributes(new RouteValueDictionary(atributos));
anchorBuilder.InnerHtml = imgHtml; // include the <img> tag inside
string anchorHtml = anchorBuilder.ToString(TagRenderMode.Normal);
return MvcHtmlString.Create(anchorHtml);
}
Aqui eu chamo:
@Html.ActionImage("~/Content/Images/Icons/edit.png", "EditAjax", "Convenio", new { id = item.Id }, new { @class = "openDialogConvenio", data_dialog_id = "convenioDialog", data_dialog_title = "Editar Convênio" }, "Editar")
Os atributos que passo são para chamar a view dentro de um modal:
$(".openDialogConvenio").live("click", function (e) {
e.preventDefault();
$("<div></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
title: $(this).attr("data-dialog-title"),
close: function () { $(this).remove() },
modal: true,
width: 350,
})
.load(this.href);
});
Porém, não funciona como espero:
Eis o controller:
[HttpGet]
public ActionResult EditAjax(int id)
{
Convenio conveniomodel = null;
if (Request.IsAjaxRequest())
{
conveniomodel = Convenios.ObterConvenio(id);
return View("Edit", conveniomodel);
}
return View(conveniomodel);
}
//
// POST: /Entries/Default1/Edit/5
[HttpPost]
public ActionResult EditAjax(Convenio input)
{
if (!ModelState.IsValid)
{
if (Request.IsAjaxRequest())
return PartialView("Edit", input);
return View(input);
}
if (Request.IsAjaxRequest())
{
Convenios.Salvar(input);
return PartialView("MessageBox", input);
}
return RedirectToAction("Index");
}
Se eu chamar dessa forma:
@Html.ActionLink("Editar", "EditAjax", "Convenio", new { id = item.Id },
new { @class = "openDialogConvenio", data_dialog_id = "convenioDialog", data_dialog_title = "Editar Convênio" })</
Funciona como deveria. Gostaria de saber o motivo.
Desenvolva!!!