2014-04-03 31 views
5

này dường như rất xa lạ với tôi, nếu tôi làmRazor: Render không hoạt động bên trong khối mã

@RenderSection("scripts", required: false) 

sau đó nó hoạt động hoàn toàn tốt đẹp, nhưng nếu tôi làm

@{ 
    RenderSection("scripts", required: false); 
} 

thì phần kịch bản sẽ không được hiển thị và tôi sẽ nhận được "Các phần sau đã được xác định nhưng chưa được hiển thị cho trang bố cục" ~/Views/Shared/_Layout.cshtml ":" scripts "." lỗi

Bất kỳ ý tưởng nào tại sao RenderSection/Script.Render không thể nằm trong khối mã?

Edit: tôi đã cố gắng đặt một điểm break bên trong khối mã và các điểm break được nhận được hit khi tải trang, và các phương pháp RenderSection thực hiện mà không cần bất kỳ ngoại lệ

Trả lời

4

RenderSection không viết bất cứ điều gì. Thay vào đó, các phương thức này trả về một HelperResult thực hiện IHtmlString và có thể được hiển thị cho trang bằng cách sử dụng phương thức WriteTo của nó.

@{ 
    HelperResult renderSection = RenderSection("scripts", required: false); 
    renderSection.WriteTo(Output); 
} 

Khi sử dụng @RenderSection nó tự động làm cho nó vào trang

+0

nên nó có nghĩa là @ và @ {} Cú pháp là thực sự khác nhau trong một số cách? – Steve

+1

@Steve chúng rất khác nhau. @ {} là một khối mã, @ không phải là –

+0

'@ RenderSection' và' @ (RenderSection) 'là tương đương, nhưng' @ {RenderSection} 'là hoàn toàn khác nhau. – meziantou

Các vấn đề liên quan