ไม่สามารถแปลง type void เป็น object โดยปริยายได้ .NET MVC PartialViewResult


92

ฉันมีการดำเนินการของคอนโทรลเลอร์ดังต่อไปนี้:

[ChildActionOnly]
public virtual PartialViewResult ListActions(int id)
{
    var actions = meetingActionRepository.GetAllMeetingActions(id);

    return PartialView(actions);
}

และลิงก์การดำเนินการต่อไปนี้ (โดยใช้ t4MVC และไวยากรณ์ของมีดโกน)

<p>
   @Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>

อย่างไรก็ตามสิ่งนี้ทำให้ฉันมีข้อผิดพลาด:

ไม่สามารถแปลง type void เป็น object โดยปริยายได้

เท่าที่ฉันสามารถบอกได้ว่าการทำงานของคอนโทรลเลอร์นั้นโอเคแล้วอะไรจะทำให้ฉันมีข้อผิดพลาดนี้

คำตอบ:


127

แบบนี้:

<p>
    @Html.Action(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>

หรือหากคุณยืนยันRenderActionเช่นนี้:

<p>
    @{Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId));}
</p>

โดยส่วนตัวแล้วฉันชอบแบบแรกทำให้การกดแป้นพิมพ์น้อยลง


1
ขอขอบคุณ. ไวยากรณ์ Funky ที่นั่น ฉันคิดว่านั่นเป็นวิธีมีดโกนในการทำ <% html แทนที่จะเป็น <% = Html? อะไรคือความแตกต่างระหว่าง Action และ Renderaction Phil Haack กล่าวว่า RenderAction มีประสิทธิภาพมากกว่า?
MrBliz

2
@ Doozer1979 ใช่แล้วนั่นคือวิธีมีดโกน
Darin Dimitrov

สิ่งนี้ใช้ได้เช่นกัน: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));} ดังนั้นจึงไม่จำเป็นต้องใช้ @
FrenkyB


37

ฉันมีปัญหาเดียวกัน สิ่งที่ทำงานสำหรับฉันคือการแค็ปซูแสดงออกในวงเล็บปีกกา

@{Html.RenderPartial("viewName", Model);}


สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่ฉันไม่รู้ว่าทำไมการเพิ่มวงเล็บดัดผมจึงได้ผล คุณสามารถอธิบายได้หรือไม่?
Brad Thiessen

1
@BradThiessen มันใช้งานได้เพราะ ASP.NET MVC ค่อนข้างตรงไปตรงมาเป็นเฟรมเวิร์กที่แย่เต็มไปด้วยช่องโหว่และการตัดสินใจในการออกแบบที่ไม่ดี เพิ่งเจอมาเหมือนกันค่ะ ใครจะรู้ว่าทำไม แต่ความอดทนของฉันทำให้ MVC ผอมลง
user9993

10
@BradThiessen RenderPartial()เป็นโมฆะโดยใช้@คุณบอกว่า Razor พิมพ์ออกมาซึ่งเป็นไปไม่ได้เนื่องจากไม่ได้สร้างเนื้อหาเอาต์พุตใด ๆ !
S.Serpooshan

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.