none
ActionLink com imagem RRS feed

  • Pergunta

  • 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!!!

    segunda-feira, 7 de maio de 2012 11:28

Todas as Respostas