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

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

19
มุมมองที่ใช้มีดโกนไม่เห็นชุดประกอบที่อ้างอิง
ฉันกำลังพยายามสร้างมุมมองที่พิมพ์ผิดโดยอิงจากคลาสจากแอสเซมบลีอื่น ไม่ว่าจะด้วยเหตุผลใดก็ตามมุมมอง Razor ของฉันดูเหมือนจะไม่สามารถมองเห็นส่วนประกอบอื่น ๆ ที่อ้างถึงในโครงการของฉันได้ เช่น @model MyClasses.MyModel ผลลัพธ์ในข้อผิดพลาดใน Visual Studio 2010 "ไม่พบชนิดหรือชื่อเนมสเปซMyClasses(คุณไม่มีคำสั่งโดยใช้หรือการอ้างอิงแอสเซมบลีหรือไม่)" คลาสเดียวกันที่อ้างถึงในเอ็นจินมุมมองมาตรฐานทำงานได้ดี ฉันมีปัญหาเหมือนกันในการพยายามอ้างอิงชั้นเรียนในเนื้อหาของมุมมองของฉัน ฉันพลาดบางอย่างเกี่ยวกับ Razor หรือฉันจำเป็นต้องอ้างอิงการประกอบด้วยวิธีอื่นหรือไม่?

4
Razor ViewEngine: ฉันจะหนีสัญลักษณ์“ @” ได้อย่างไร?
ฉันกำลังพยายามส่งออกตัวจัดการ Twitter บางตัวใน ASP.NET MVC3 ร่วมกับ Twitter @Anywhere API และฉันไม่สามารถหาวิธีหลีกเลี่ยงสัญลักษณ์ "@" ในมุมมองมีดโกนได้ ไม่มีใครรู้ว่าไวยากรณ์สำหรับการหลีกเลี่ยงอักขระ "@" ใน Razor คืออะไร? ฉันได้ลองใช้<text></text>แล้วและส่งผลให้เกิดข้อผิดพลาด JIT

3
แอตทริบิวต์ HTML แบบมีเงื่อนไขโดยใช้ Razor MVC3
ตัวแปร strCSSClass มักมีค่า แต่บางครั้งก็ว่างเปล่า ฉันไม่ต้องการรวม class = "" ที่ว่างเปล่าไว้ใน HTML ขององค์ประกอบอินพุตนี้ซึ่งหมายความว่าถ้า strCSSClass ว่างเปล่าฉันไม่ต้องการแอตทริบิวต์ class = เลย ต่อไปนี้เป็นวิธีหนึ่งในการสร้างแอตทริบิวต์ HTML แบบมีเงื่อนไข: <input type="text" id="@strElementID" @(CSSClass.IsEmpty() ? "" : "class=" + strCSSClass) /> มีวิธีที่หรูหรากว่านี้หรือไม่? โดยเฉพาะอย่างยิ่งที่ฉันสามารถทำตามไวยากรณ์เดียวกันกับที่ใช้ในส่วนอื่น ๆ ขององค์ประกอบ: class = "@ strCSSClass"?

4
Razor ไม่เข้าใจแท็ก html ที่ไม่ปิด
ด้วย RazorViewEngine ฉันสามารถทำได้: if (somecondition) { <div> some stuff </div> } แต่ดูเหมือนจะทำไม่ได้ (Razor สับสน): if (somecondition) { <div> } if (someothercondition) { </div> } ฉันมีสถานการณ์ที่ฉันจำเป็นต้องใส่แท็ก html เปิดและปิดในบล็อกโค้ดต่างๆ - ฉันจะทำสิ่งนี้ใน Razor ได้อย่างไร?

11
ASP.NET MVC 3: แทนที่แอตทริบิวต์ "name" ด้วย TextBoxFor
เป็นไปได้ไหมเมื่อใช้Html.TextBoxForเพื่อแทนที่แอตทริบิวต์ name ฉันพยายามแล้วไม่ประสบความสำเร็จ ฉันจำเป็นต้องใช้ TextBoxFor เพื่อให้การตรวจสอบฝั่งไคลเอ็นต์ทำงานได้อย่างไรก็ตามด้วยเหตุผลที่ฉันจะไม่เข้าไปฉันต้องการให้ชื่อของกล่องข้อความแตกต่างจากที่สร้างขึ้น ฉันได้ลองทำสิ่งต่อไปนี้แล้ว: @Html.TextBoxFor(x => x.Data, new { name = Model.Key + "_Data", id = Model.Key + "_Data" }) ซึ่งใช้ได้กับ ID แต่ไม่ใช่ชื่อ เป็นไปได้หรือไม่ อัปเดต : ค้นหารหัสสำหรับ TextBoxFor ดูเหมือนจะไม่มีวิธีง่ายๆ หวังว่าจะมีคนพิสูจน์ได้ว่าฉันผิด

19
ช่องทำเครื่องหมายสำหรับบูลีนที่เป็นโมฆะ
โมเดลของฉันมีบูลีนที่ต้องเป็นโมฆะ public bool? Foo { get; set; } ดังนั้นใน Razor cshtml ของฉันฉันมี @Html.CheckBoxFor(m => m.Foo) ยกเว้นไม่ได้ผล ไม่หล่อด้วย (บูล) ถ้าฉันทำ @Html.CheckBoxFor(m => m.Foo.Value) ที่ไม่สร้างข้อผิดพลาด แต่ไม่ผูกกับโมเดลของฉันเมื่อโพสต์และ foo ถูกตั้งค่าเป็น null วิธีใดเป็นวิธีที่ดีที่สุดในการแสดง Foo บนเพจและทำให้มันเชื่อมโยงกับโมเดลของฉันในโพสต์

20
ไม่มีชื่อ 'ViewBag' ในบริบทปัจจุบัน - Visual Studio 2015
ฉันเริ่มพัฒนาใน ASP.NET อีกครั้งและพบข้อผิดพลาดเล็กน้อยภายใน Visual Studio ไฟล์. cshtml ของฉันแสดงข้อผิดพลาดเมื่อใช้ฟังก์ชันมีดโกนบางอย่าง ตัวอย่างเช่น "ชื่อ" ViewBag "ไม่มีอยู่ในบริบทปัจจุบัน" นี่คือภาพ: ฉันกำลังใช้โครงการสาธิต คุณสามารถค้นหาโครงการได้ที่นี่: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject ฉันได้ดูหัวข้ออื่น ๆ หลายหัวข้อและส่วนใหญ่แนะนำให้อัปเดตไฟล์ web.config ไฟล์กำหนดค่า 2 ไฟล์นี้มีอยู่แล้วและเนื่องจากเป็นเดโมยอดนิยมฉันจึงถือว่ามีการกำหนดค่าที่จำเป็นทั้งหมดในนั้น แน่นอนฉันได้ดูไฟล์กำหนดค่าเหล่านี้แล้วและพวกเขาก็รวมโซลูชันที่แนะนำไว้ด้วย รายละเอียดอื่น ๆ: ฉันใช้ clean & rebuild ในโซลูชันแล้ว แต่ไม่มีอะไรเปลี่ยนแปลง เมื่อฉันสร้างโครงการ MVC ใหม่ทั้งหมดมันได้ผล เพื่อนของฉันมีปัญหาเดียวกันและเราทั้งคู่ใช้ VS 2015 และ Windows 10 ฉันยังสามารถเรียกใช้แอปพลิเคชันได้และใช้งานได้ ขอบคุณล่วงหน้า.

13
Html.DropdownList สำหรับค่าที่เลือกไม่ได้ถูกตั้งค่า
ฉันจะตั้งค่าที่เลือกของ Html.DropDownListFor ได้อย่างไร ฉันได้ดูออนไลน์และได้เห็นว่าสามารถทำได้โดยใช้พารามิเตอร์ที่สี่ดังต่อไปนี้: @Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country") รายการเลือกของฉันจากนั้นจะแสดงดังนี้: <select id="ShipFromCountries" name="ShipFromCountries"> <option value="">Please select a country</option> <option value="GB">United Kingdom</option> <option value="US">United States</option> ... </select> แต่ด้วยเหตุผลบางประการสหราชอาณาจักรยังคงถูกเลือก แต่ฉันต้องการให้เลือก "โปรดเลือกประเทศ" ใครรู้ว่าฉันจะบรรลุเป้าหมายนี้ได้อย่างไร? แก้ไข ฉันได้อัปเดตรหัสของฉันเนื่องจากมีการเปลี่ยนแปลงการทำงานเล็กน้อย แต่ดูเหมือนว่าจะยังคงพบปัญหานี้อยู่ นี่คือสิ่งที่อยู่ในมุมมองของฉัน: @Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please …
100 asp.net-mvc  razor 

3
ชุดสไตล์ MVC4 ให้ 403
เมื่อเปิดใช้งานบันเดิล / ลดขนาดบันเดิลบางส่วนของฉันดูเหมือนว่าจะมี URL ที่ไม่ถูกต้องในเบราว์เซอร์ (ลงท้ายด้วย a /) และ IIS ให้ข้อผิดพลาดที่ต้องห้าม 403 เหมือนกับว่าพยายามแสดงรายการเนื้อหาของโฟลเดอร์ วิธีการตั้งค่าบันเดิลของฉันไม่มีความแตกต่าง - ไม่ใช่. min.css, สิทธิ์การเข้าถึงถูกต้อง ฯลฯ


3
@ Html BeginForm แสดง“ System.Web.Mvc.Html.MvcForm” บนหน้า
ฉันมีมุมมองใบมีดโกนที่ฉันเพิ่มปุ่มลบไว้ในคำสั่ง 'if' และเมื่อมุมมองถูกแสดงในเบราว์เซอร์มันจะแสดง"System.Web.Mvc.Html.MvcForm"ถัดจากปุ่มลบ ฉันจะกำจัดมันได้อย่างไร? นี่คือรหัส: <div id="deletestatusupdate"> @if (update.User.UserName.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase)) { @Html.BeginForm("deleteupdate", "home") @Html.Hidden("returnUrl", Request.Url.ToString()) <button name="id" value="@update.StatusUpdateId">Delete</button> } </div> นี่คือลักษณะที่ปรากฏในมุมมอง Razor ที่แสดงผล: System.Web.Mvc.Html.MvcForm [ปุ่มลบ] แสร้งทำเป็นว่า [ปุ่มลบ] เป็นปุ่มจริงไม่รู้สึกเหมือนกำลังถ่ายภาพหน้าจอ ขอขอบคุณสำหรับความช่วยเหลือของคุณ.

6
ASP.NET MVC Razor: วิธีการแสดง HTML ของ Razor Partial View ภายในการทำงานของคอนโทรลเลอร์
วิธีการสร้าง HTML ของมุมมองบางส่วนให้กับเครื่องยนต์มุมมอง ASP.NET เป็นที่รู้จักกัน แต่หากใช้ฟังก์ชันนี้ในมุมมองบางส่วนของมีดโกนจะไม่ทำงานเนื่องจากข้อยกเว้นกล่าวว่ามุมมองบางส่วนไม่ได้มาจาก "UserControl" จะแก้ไขการแสดงผลเพื่อรองรับมุมมองบางส่วนของมีดโกนได้อย่างไร? ฉันต้องการสิ่งนี้เพราะฉันสร้างอีเมลจากมุมมองบางส่วนนี้ ... อัพเดท: รหัสที่ล้มเหลว (@mcl): public string RenderPartialToString(string controlName, object viewData) { ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() }; viewPage.Url = this.GetUrlHelper(); string fullControlName = "~/Views/Email/" + controlName + ".ascx"; viewPage.ViewData = new ViewDataDictionary(viewData); viewPage.Controls.Add(viewPage.LoadControl(fullControlName)); StringBuilder sb = …
97 c#  asp.net-mvc  razor 

6
การต่อมีดโกน ASP.NET MVC
ฉันกำลังลองแสดงรายการ HTML ที่มีลักษณะดังต่อไปนี้โดยใช้ Razor view engine: <ul> <li id="item_1">Item 1</li> <li id="item_2">Item 2</li> </ul> รหัสที่ฉันพยายามใช้เพื่อแสดงรายการนี้คือ: <ul> @foreach (var item in Model.TheItems) { <li id="item_@item.TheItemId">Item @item.TheItemId</li> } </ul> ตัวแยกวิเคราะห์กำลังสำลักเพราะคิดว่าทุกอย่างทางขวาของขีดล่างในแอตทริบิวต์ id เป็นข้อความธรรมดาและไม่ควรแยกวิเคราะห์ ฉันไม่แน่ใจว่าจะสั่งให้ parser แสดงผล TheItemId ได้อย่างไร ฉันไม่ต้องการ แต่คุณสมบัติบนวัตถุโมเดลที่มีคำนำหน้า item_ ฉันต้องเก็บไวยากรณ์นี้ไว้ด้วยขณะที่ฉันใช้รายการกับ JQuery Sortable และด้วยฟังก์ชัน serialize ที่ต้องใช้แอตทริบิวต์ id เพื่อจัดรูปแบบในไวยากรณ์นี้

7
ASP MVC href ไปยังคอนโทรลเลอร์ / มุมมอง
ฉันมีสิ่งนี้: <li><a href="/Users/Index)" class="elements"><span>Clients</span></a></li> ซึ่งใช้งานได้ดี แต่ถ้าฉันทำไปแล้วในหน้านี้หรือบนเช่นการควบคุมและฉันคลิกที่ลิงค์นี้เปลี่ยนเส้นทางให้ฉันไป/Users/Details/Users/Index ฉันจะหาเส้นทางที่ถูกต้องhrefโดยไม่คำนึงถึงตำแหน่งปัจจุบันของฉันบนไซต์ได้อย่างไร

4
Html.RenderPartial () ไวยากรณ์ด้วย Razor
ใช้งานได้เนื่องจากส่งคืนผลลัพธ์ของการแสดงผลมุมมองบางส่วนในสตริง: @Html.Partial("Path/to/my/partial/view") แต่ฉันชอบใช้RenderPartialและดูเหมือนว่าฉันต้องเขียน: @{Html.RenderPartial("Path/to/my/partial/view");} แทน: @Html.RenderPartial("Path/to/my/partial/view"); เพื่อให้มันใช้งานได้ ข้อความผิดพลาด: Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments หากมีวิธีใดที่ดีกว่าแทนที่จะเปิดบล็อกรหัส@{...}สำหรับการเรียกวิธีเดียว?

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