简体   繁体   中英

I cant using Html.RenderAction in .cshtml

FRONTEND

@{
    <div>
        @Html.RenderAction("UrunOzellikTipWidget", "Admin");
        @Html.RenderAction("UrunOzellikDegerWidget", "Admin");
    </div>
}

BACKEND

public ActionResult UrunOzellikEkle()
{
    return View(Context.Baglanti.Urun.ToList());
}

public PartialViewResult UrunOzellikTipWidged(int? katID)
{
    if (katID != null)
    {
        var data = Context.Baglanti.OzellikTip
            .Where(x => x.KategoriID == katID)
            .ToList();
        return PartialView(data);
    }
    else
    {
        var data = Context.Baglanti.OzellikTip.ToList();
        return PartialView(data);
    }
}

public PartialViewResult UrunOzellikDegerWidget(int? tipID)
{
    if (tipID != null)
    {
        var data = Context.Baglanti.OzellikDeger
            .Where(x => x.OzellikTipID == tipID)
            .ToList();
        return PartialView(data);
    }
    else
    {
        var data = Context.Baglanti.OzellikDeger
            .ToList();
        return PartialView(data);
    }
}

**ERROR CODE:Severity Code Description Project File Line Suppression State Error CS0029 Cannot implicitly convert type 'void' to 'object' **

Revise your code in FRONTEND to the following (remove the redundant ampersands from both Html.RenderAction statements).

<div>
      @{ Html.RenderAction("UrunOzellikTipWidget", "Admin"); }
      @{ Html.RenderAction("UrunOzellikDegerWidget", "Admin") };
</div>

@Html.RenderAction renders the result and, instead of returns it as string, writes it directly to the response and returns Void . So you will have to use it inside a C# block, denoted as @{ } , and end it with a semicolon at the end, just like how you invoke/call a void function.

So your front-end needs to be changed to:

<div>
    @{
        Html.RenderAction("UrunOzellikTipWidget", "Admin");
        Html.RenderAction("UrunOzellikDegerWidget", "Admin");
    }
</div>

The other's answer (removing the redundant ampersands) won't work because those 2 RenderAction are wrapped inside a <div /> . If you remove the ampersand, they're treated as just regular HTML. It will output as:

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM