คำถามติดแท็ก razor

Razor คือภาษาเทมเพลตที่ใช้โดยเว็บเพจ ASP.NET และ ASP.NET MVC (ตั้งแต่เวอร์ชัน 3) มันเพิ่มเลเยอร์ของสิ่งที่เป็นนามธรรมเหนือการสร้าง HTML รองรับการเปลี่ยนระหว่าง HTML มาร์กอัปและรหัส C # หรือ VB อย่างราบรื่น การเปลี่ยนระหว่างมาร์กอัปและรหัสระบุด้วยเครื่องหมาย "@"

7
Razor View Engine: ทรีนิพจน์อาจไม่มีการดำเนินการแบบไดนามิก
ฉันมีรูปแบบคล้ายกับสิ่งนี้: public class SampleModel { public Product Product { get; set; } } และในตัวควบคุมของฉันฉันได้รับข้อยกเว้นพยายามพิมพ์ออกมา @Html.TextBoxFor(p => p.Product.Name) นี่เป็นข้อผิดพลาด: Exception: An expression tree may not contain a dynamic operation หากใครสามารถให้เบาะแสกับฉันเกี่ยวกับวิธีการแก้ไขปัญหานี้ฉันจะขอบคุณมันจริงๆ!

7
มีดโกนผสมและรหัส Javascript
ฉันค่อนข้างสับสนกับวิธีการผสมมีดโกนและเจเอส นี่คือฟังก์ชั่นปัจจุบันที่ฉันติดอยู่: <script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { data.push([ @r.UnixTime * 1000, @r.Value ]); } ถ้าฉันสามารถประกาศ c # code ด้วย<c#></c#>และทุกอย่างอื่นเป็นรหัส JS - นี่จะเป็นสิ่งที่ฉันหลังจาก: <script type="text/javascript"> var data = []; <c#>@foreach (var r in Model.rows) {</c#> data.push([ <c#>@r.UnixTime</c#> * 1000, <c#>@r.Value</c#> ]); <c#>}</c#> อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?
171 c#  javascript  razor 

5
ความแตกต่างระหว่าง Html.TextboxFor และ Html.EditorFor ใน MVC และมีดโกน
ทำไมค่าเริ่มต้นถึงถูกเปลี่ยนเมื่อเพิ่มมุมมอง "แก้ไข" ใหม่ อะไรคือข้อดีเมื่อใช้EditorFor()กับTextboxFor()? ฉันพบสิ่งนี้ ตามค่าเริ่มต้นตอนนี้สร้างและแก้ไข scaffolds ใช้ตัวช่วย Html.EditorFor แทนตัวช่วย Html.TextBoxFor สิ่งนี้ช่วยปรับปรุงการรองรับข้อมูลเมตาบนโมเดลในรูปแบบของแอตทริบิวต์คำอธิบายประกอบข้อมูลเมื่อกล่องโต้ตอบเพิ่มมุมมองสร้างมุมมอง

8
Razor HtmlHelper Extensions (หรือเนมสเปซอื่นสำหรับมุมมอง) ไม่พบ
Dunno หากสิ่งนี้เกิดขึ้นใน PR หรือเบต้า แต่ถ้าฉันสร้างวิธีการต่อขยายHtmlHelperมันจะไม่ได้รับการยอมรับในหน้ามีดโกนที่ใช้พลังงาน: namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static string Foo(this HtmlHelper html) { return "Foo"; } } } ฉันเพิ่มลงใน<Namespaces>ส่วนในWeb.config: <pages> <namespaces> <add namespace="System.Web.Mvc" /> <!-- snip --> <add namespace="SomeNamespace.Extensions"/> </namespaces> </pages> แต่จะมีข้อผิดพลาดในการคอมไพล์เมื่อพยายามดูหน้า: @Html.Foo() หากฉันสร้างหน้าขึ้นใหม่ด้วยWebFormsก็ใช้งานได้ดี ตกลงคืออะไร? วิธีแก้ปัญหา หากฉันรวม@using SomeNamespace.Extensionsไว้ในมุมมองมีดโกนของฉันแล้วก็ใช้งานได้ แต่ฉันก็อยากจะลองใช้ดูWeb.config

12
ประเภท Dynamic Anonymous ใน Razor ทำให้ RuntimeBinderException
ฉันได้รับข้อผิดพลาดต่อไปนี้: 'object' ไม่มีคำนิยามสำหรับ 'RatingName' เมื่อคุณดูประเภทไดนามิกนิรนามจะมี RatingName อย่างชัดเจน ฉันรู้ว่าฉันสามารถทำได้ด้วย Tuple แต่ฉันต้องการที่จะเข้าใจว่าทำไมข้อผิดพลาดเกิดขึ้น

1
วิธีที่ถูกต้องในการใช้ _viewstart.cshtml และมุมมองมีดโกนบางส่วน?
ฉันใช้_viewstart.cshtmlเพื่อกำหนดมีดโกนรูปแบบเดียวกันให้กับมุมมองของฉันโดยอัตโนมัติ เป็นไฟล์แบบง่าย ๆ ที่อยู่ในรูทของโฟลเดอร์ Views ของฉันที่มีลักษณะดังนี้: @{ Layout = "~/Views/Shared/_Layout.cshtml"; } นี่คือ DRY มากกว่าการเพิ่มคำสั่ง @Layout ในทุก ๆ มุมมอง อย่างไรก็ตามสิ่งนี้ทำให้เกิดปัญหาสำหรับมุมมองบางส่วนของ Razor เนื่องจากพวกเขาเรียกใช้เนื้อหาของ _viewstart.cshtml ดังนั้นจึงกำหนดรูปแบบตัวเองอย่างไม่ถูกต้องซึ่งทำให้พวกเขาเอ่อไม่ใช่บางส่วนอีกต่อไป นี่คือโครงการสมมุติซึ่งแสดงไฟล์ _viewstart.cshtml, ไฟล์ _layout.shtml ที่ใช้ร่วมกันและมุมมองบางส่วน ("AnonBar.cshtml") ปัจจุบันวิธีที่ฉันได้รับรอบนี้คือการเพิ่มบรรทัดต่อไปนี้ในทุกมุมมองบางส่วน: @{ Layout = ""; } ดูเหมือนว่าวิธีการที่ผิดในการแสดงว่ามุมมองเป็นส่วนหนึ่งในมีดโกน (โปรดทราบว่าไม่เหมือนกับเอ็นจิ้นดูเว็บฟอร์มส่วนขยายไฟล์จะเหมือนกันสำหรับบางส่วนของมุมมอง) ตัวเลือกอื่น ๆ ที่ฉันพิจารณา แต่นั่นแย่กว่า: วางมุมมองบางส่วนทั้งหมดลงในโฟลเดอร์ทั่วไปเพื่อให้พวกเขาสามารถแบ่งปัน _viewstart.cshtml ทั่วไป สิ่งนี้จะทำให้การประชุมของมุมมองอยู่ในโฟลเดอร์เดียวกับตัวควบคุม ไม่ได้ใช้มุมมองบางส่วน นี่เป็นบางสิ่งที่ยังคงถูกถ่ายทอดออกมาโดยทีมงานของ Razor View Engine …

4
วิธีใช้ ? : if statement ที่มี Razor และบล็อคโค้ดแบบอินไลน์
ฉันกำลังอัปเดตมุมมอง. aspx อันเก่าด้วยเอ็นจิ้นมุมมอง Razore ใหม่ ฉันมีสถานที่มากมายที่ฉันมีรหัสเช่นนี้: <span class="vote-up<%= puzzle.UserVote == VoteType.Up ? "-selected" : "" %>">Vote Up</span> เป็นการดีที่ฉันต้องการทำสิ่งนี้: <span class="vote-up@{puzzle.UserVote == VoteType.Up ? "-selected" : ""}">Vote Up</span> อย่างไรก็ตามมีสองปัญหาที่นี่: vote-up@{puzzle.UserVote .... ไม่ถือว่าสัญลักษณ์ @ เป็นจุดเริ่มต้นของการบล็อกรหัส @puzzle.UserVote == VoteType.Upดูที่ส่วนแรก@puzzle.UserVoteราวกับว่ามันควรจะแสดงค่าของตัวแปร ใครรู้วิธีแก้ปัญหาเหล

7
MVC 3: วิธีการที่จะทำให้มุมมองที่ไม่มีเค้าโครงหน้าของมันเมื่อโหลดผ่านอาแจ็กซ์?
ฉันกำลังเรียนรู้เกี่ยวกับการเพิ่มประสิทธิภาพแบบก้าวหน้าและฉันมีคำถามเกี่ยวกับมุมมอง AJAXifying ในโครงการ MVC 3 ของฉันฉันมีหน้าเลย์เอาต์หน้าเริ่มต้นและมุมมองธรรมดาสองมุมมอง หน้าเริ่มต้นอยู่ในรูทของโฟลเดอร์มุมมองและใช้กับมุมมองทั้งหมด มันระบุว่ามุมมองทั้งหมดควรใช้_Layout.cshtmlสำหรับหน้าเค้าโครงของพวกเขา หน้าเลย์เอาต์มีลิงก์การนำทางสองลิงก์หนึ่งรายการสำหรับแต่ละมุมมอง การเชื่อมโยงการใช้งาน@Html.ActionLink()ที่จะทำให้ตัวเองไปยังหน้า ตอนนี้ผมได้เพิ่ม jQuery และต้องการที่จะจี้เชื่อมโยงเหล่านี้และใช้อาแจ็กซ์ในการโหลดเนื้อหาของพวกเขาบนหน้าเว็บแบบไดนามิก <script type="text/javascript"> $(function () { $('#theLink').click(function () { $.ajax({ url: $(this).attr('href'), type: "GET", success: function (response) { $('#mainContent').html(response); } }); return false; }); }); </script> มีสองวิธีที่ฉันสามารถคิดทำ แต่ฉันไม่ชอบโดยเฉพาะอย่างยิ่ง: 1) ฉันสามารถนำเนื้อหาทั้งหมดของมุมมองและวางไว้ในมุมมองบางส่วนจากนั้นให้มุมมองหลักเรียกมุมมองบางส่วนเมื่อมีการแสดงผล ด้วยวิธีนี้Request.IsAjaxRequest()ในการใช้งานคอนโทรลเลอร์ฉันสามารถส่งคืนView()หรือส่งคืนข้อมูลPartialView()โดยพิจารณาว่าคำขอนั้นเป็นคำขอ Ajax หรือไม่ ฉันไม่สามารถคืนค่ามุมมองปกติไปยังคำขอ Ajax ได้เพราะจะใช้หน้าเลย์เอาต์และฉันจะได้รับสำเนาชุดที่สองของหน้าเลย์เอาต์ อย่างไรก็ตามฉันไม่ชอบสิ่งนี้เพราะมันบังคับให้ฉันสร้างมุมมองว่างเปล่าที่มีเพียงแค่@{Html.RenderPartial();}ในมุมมองสำหรับคำขอ GET …

3
ฉันจะเขียน Json ที่ไม่มีการเข้ารหัสลงในมุมมองของฉันโดยใช้มีดโกนได้อย่างไร
ฉันพยายามเขียนวัตถุเป็น JSON ไปยัง Asp.Net MVC View ของฉันโดยใช้มีดโกนเช่น: <script type="text/javascript"> var potentialAttendees = @Json.Encode(Model.PotentialAttendees); </script> ปัญหาคือว่าในการส่งออก JSON ถูกเข้ารหัสและเบราว์เซอร์ของฉันไม่ชอบมัน ตัวอย่างเช่น: <script type="text/javascript"> var potentialAttendees = [{"Name":"Samuel Jack"},]; </script> ฉันจะให้มีดโกนปล่อย JSON ที่ไม่มีการเข้ารหัสได้อย่างไร
153 asp.net-mvc  json  razor 

4
ฉันจะส่งพารามิเตอร์ไปยังมุมมองบางส่วนใน mvc 4 ได้อย่างไร
ฉันมีลิงค์เช่นนี้: <a href='Member/MemberHome/Profile/Id'><span>Profile</span></a> และเมื่อฉันคลิกที่นี่มันจะเรียกหน้านี้บางส่วน: @{ switch ((string)ViewBag.Details) { case "Profile": { @Html.Partial("_Profile"); break; } } } หน้า _Profile บางส่วนประกอบด้วย: Html.Action("Action", "Controller", model.Paramter) ตัวอย่าง: @Html.Action("MemberProfile", "Member", new { id=1 }) // id is always changing ข้อสงสัยของฉันคือฉันจะส่ง "Id" นี้ไปยังส่วน model.parameter ได้อย่างไร ตัวควบคุมของฉันคือ: public ActionResult MemberHome(string id) { ViewBag.Details = id; return View(); …

4
วิธีการเพิ่มคลาส css ที่สองที่มีค่าเงื่อนไขในมีดโกน MVC 4
ในขณะที่ Microsoft ได้สร้างการแสดงผลอัตโนมัติของแอตทริบิวต์ htmlในมีดโกน MVC4 แต่ฉันใช้เวลาพอสมควรในการหาวิธีสร้างคลาส css ที่สองในองค์ประกอบโดยยึดตามการแสดงออกตามเงื่อนไขของมีดโกน ฉันต้องการแบ่งปันกับคุณ ตามคุณสมบัติโมเดล @ ModelDetails ฉันต้องการแสดงหรือซ่อนรายการ หากมีรายละเอียดควรมีการแสดง div ไม่เช่นนั้นควรซ่อนตัว ใช้ jQuery สิ่งที่ฉันต้องทำคือเพิ่มการแสดงหรือซ่อนชั้นตามลำดับ สำหรับวัตถุประสงค์อื่นฉันต้องการเพิ่มคลาสอีก "รายละเอียด" ดังนั้นการมาร์กอัปของฉันควรเป็น: <div class="details show">[Details]</div> หรือ <div class="details hide">[Details]</div> ด้านล่างนี้ฉันแสดงความพยายามที่ล้มเหลวบางอย่าง (ผลการมาร์กอัปสมมติว่าไม่มีรายละเอียด) สิ่งนี้: <div @(@Model.Details.Count > 0 ? "class=details show" : "class=details hide")>, จะทำให้สิ่งนี้: <div class="details" hide="">. สิ่งนี้: <div @(@Model.Details.Count > …

5
วิธีเพิ่มเนมสเปซพิเศษให้กับหน้ามีดโกนแทนที่จะใช้การประกาศ @ ใช้อย่างไร
มีเวทมนต์บางอย่างที่ฉันต้องใช้เพื่อรับเนมสเปซในpages/namespacesองค์ประกอบใน webconfig หรือไม่? <pages> <namespaces> <add namespace="System.Web.Mvc"/> <add namespace="System.Web.Mvc.Ajax"/> <add namespace="System.Web.Mvc.Html"/> <add namespace="System.Web.Routing"/> <add namespace="System.Web.WebPages"/> <add namespace="System.Web.Helpers"/> <add namespace="MyCustomHelpers"/> </namespaces> </pages> ด้านบนไม่ต้องการทำงาน ฉันรู้ว่าเนมสเปซนั้นใช้ได้เพราะเมื่อฉันวาง@using MyCustomHelpersที่ด้านบนของหน้ามันทำงานได้อย่างน่าอัศจรรย์ นี่คือเพื่อให้ฉันสามารถHtml.SomeFunction()ทำงานได้โดยไม่ต้องใส่@usingที่ด้านบนของทุกหน้าของฉัน

6
การใช้มีดโกนฉันจะสร้าง Boolean ให้กับตัวแปร JavaScript ได้อย่างไร
ฉันจะแสดง Boolean เป็นตัวแปร JavaScript ในไฟล์ cshtml ได้อย่างไร ปัจจุบันนี้แสดงข้อผิดพลาดทางไวยากรณ์: <script type="text/javascript" > var myViewModel = { isFollowing: @Model.IsFollowing // This is a C# bool }; </script>

5
เหตุใดมีดโกน _layout.cshtml จึงมีขีดล่างนำในชื่อไฟล์
ในโครงการ ASP.NET MVC 3 ที่เป็นค่าเริ่มต้นไฟล์เลย์เอาต์และ cshtml บางส่วนเริ่มต้นด้วยการขีดเส้นใต้ _viewstart _Layout _LogOnPartial ทำไมการประชุมนี้และสิ่งนี้ใช้ทำอะไร? ฉันจำเป็นต้องทำตามอนุสัญญานี้หรือไม่? เฟรมเวิร์กให้ความหมายพิเศษกับ.cshtmlไฟล์ที่ขึ้นต้นด้วยขีดล่างหรือไม่?

12
DropDownList ใน MVC 4 ที่มีมีดโกน
ฉันพยายามที่จะสร้างDropDownListในมุมมองของมีดโกน มีคนช่วยฉันด้วยเรื่องนี้ไหม รหัส HTML5 ปกติ: <select id="dropdowntipo"> <option value="Exemplo1">Exemplo1</option> <option value="Exemplo2">Exemplo2</option> <option value="Exemplo3">Exemplo3</option> </select> ฉันลองสิ่งนี้: @{ var listItems = new List<ListItem> { new ListItem { Text = "Exemplo1", Value = "Exemplo1" }, new ListItem { Text = "Exemplo2", Value = "Exemplo2" }, new ListItem { Text = "Exemplo3", Value = …
142 c#  asp.net-mvc  razor 

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