คำถามติดแท็ก asp.net-mvc

ASP.NET MVC Framework เป็นเฟรมเวิร์กแอปพลิเคชันเว็บแบบโอเพนซอร์ซและเครื่องมือที่ใช้โมเดลของโมเดล model-view-controller (MVC) ที่ปรับให้เหมาะกับเว็บแอ็พพลิเคชันและสร้างบนพื้นฐานเทคโนโลยี ASP.NET

11
ASP.NET MVC เส้นทางสัมพัทธ์
ในแอปพลิเคชันของฉันฉันมักจะต้องใช้เส้นทางสัมพัทธ์ ตัวอย่างเช่นเมื่อฉันอ้างอิง JQuery ฉันมักจะทำเช่นนี้: <script type="text/javascript" src="../Scripts/jquery-1.2.6.js"></script> ตอนนี้ฉันกำลังเปลี่ยนไปใช้ MVC ฉันจำเป็นต้องพิจารณาเส้นทางต่างๆที่เพจอาจมีโดยสัมพันธ์กับรูท แน่นอนว่านี่เป็นปัญหาในการเขียน URL ใหม่ในอดีต แต่ฉันสามารถแก้ไขได้โดยใช้เส้นทางที่สอดคล้องกัน ฉันทราบดีว่าโซลูชันมาตรฐานคือการใช้เส้นทางสัมบูรณ์เช่น: <script type="text/javascript" src="/Scripts/jquery-1.2.6.js"></script> แต่สิ่งนี้จะไม่ได้ผลสำหรับฉันในระหว่างรอบการพัฒนาฉันต้องปรับใช้กับเครื่องทดสอบที่แอปจะทำงานในไดเรกทอรีเสมือน พา ธ สัมพัทธ์ของรูทไม่ทำงานเมื่อรูทเปลี่ยนไป นอกจากนี้ด้วยเหตุผลด้านการบำรุงรักษาฉันไม่สามารถเปลี่ยนเส้นทางทั้งหมดในช่วงระยะเวลาของการใช้งานการทดสอบได้นั่นอาจเป็นฝันร้ายในตัวมันเอง ทางออกที่ดีที่สุดคืออะไร? แก้ไข: เนื่องจากคำถามนี้ยังคงได้รับการดูและคำตอบฉันจึงคิดว่าการอัปเดตจะต้องระมัดระวังเพื่อให้ทราบว่าในขณะที่ Razor V2 การสนับสนุน URL ที่เกี่ยวข้องกับรูทถูกอบอยู่ดังนั้นคุณจึงสามารถใช้ <img src="~/Content/MyImage.jpg"> โดยไม่มีไวยากรณ์ฝั่งเซิร์ฟเวอร์ใด ๆ และเอ็นจินมุมมองจะแทนที่ ~ / โดยอัตโนมัติไม่ว่ารูทของไซต์ปัจจุบันคืออะไร

5
แสดงสตริงเป็น html ในมุมมอง mvc ของ asp.net
ฉันมีคอนโทรลเลอร์ที่สร้างสตริงที่มีมาร์กอัป html ตอนนี้เมื่อฉันแสดงบนมุมมองมันจะแสดงเป็นสตริงธรรมดาที่มีแท็กทั้งหมด ฉันพยายามใช้ตัวช่วย Html เพื่อเข้ารหัส / ถอดรหัสเพื่อแสดงอย่างถูกต้อง แต่ใช้งานไม่ได้ string str= "<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>"; ในมุมมองของฉัน @Html.Encode(str)

2
ฉันจะเพิ่ม BundleConfig.cs ในโปรเจ็กต์ของฉันได้อย่างไร
ฉันมีโครงการ ASP.Net MVC และฉันต้องการที่จะใช้ bundling แต่ทุกอย่างที่ฉันสามารถค้นหาบนอินเทอร์เน็ตนำฉันไปเปิดBundleConfig.csในApp_Start- แต่ไฟล์นี้ไม่อยู่ในโครงการของฉัน ฉันมีเพียงแค่สามไฟล์ในโฟลเดอร์นั้น: FilterConfig, และRouteConfigWebApiConfig ไม่ได้สร้างการกำหนดค่า Bundle เมื่อฉันสร้างโซลูชัน (IIRC เป็นโปรเจ็กต์ ASP.NET MVC เปล่าในตอนเริ่มต้น) ดูเหมือนว่าสิ่งนี้จะทำได้ง่ายมาก แต่ฉันก็คิดไม่ออก ป.ล. เพียงเพื่อชี้แจงให้ผู้ที่ไม่ได้อ่านอย่างใกล้ชิดนี่เป็นแอป MVC4 / .Net 4.5 ที่สร้างขึ้นตั้งแต่ต้น วิธีแก้ปัญหาถูกทำเครื่องหมายไว้ด้านล่าง

6
'System.Net.Http.HttpContent' ไม่มีคำจำกัดความสำหรับ 'ReadAsAsync' และไม่มีวิธีการขยาย
ฉันสร้างแอปคอนโซลเพื่อใช้ Web API ที่เพิ่งสร้างขึ้น โค้ดแอปคอนโซลไม่คอมไพล์ มันทำให้ฉันมีข้อผิดพลาดในการคอมไพล์: 'System.Net.Http.HttpContent' does not contain a definition for 'ReadAsAsync' and no extension method 'ReadAsAsync' accepting a first argument of type 'System.Net.Http.HttpContent' could be found (are you missing a using directive or an assembly reference?) นี่คือวิธีทดสอบที่เกิดข้อผิดพลาดนี้ static IEnumerable<Foo> GetAllFoos() { using (HttpClient client = new HttpClient()) …

4
การกำหนดเส้นทาง: คำขอปัจจุบันสำหรับการดำเนินการ […] มีความคลุมเครือระหว่างวิธีการดำเนินการต่อไปนี้
ฉันมีการเรียกดูBrowse.chtmlซึ่งผู้ใช้สามารถป้อนคำค้นหาหรือเว้นว่างไว้ เมื่อป้อนคำค้นหาที่ผมต้องการที่จะตรงหน้าเพื่อและเมื่อไม่มีอะไรจะเข้ามาผมต้องการที่จะตรงเบราว์เซอร์http://localhost:62019/Gallery/Browse/{Searchterm} http://localhost:62019/Gallery/Browse/Start/Here เมื่อฉันลองสิ่งนี้ฉันได้รับข้อผิดพลาด: คำขอปัจจุบันสำหรับการดำเนินการ 'เรียกดู' บนตัวควบคุมชนิด 'GalleryController' ไม่ชัดเจนระหว่างวิธีการดำเนินการต่อไปนี้: System.Web.Mvc.ActionResult เรียกดู (System.String) ในประเภท AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult เรียกดู (Int32, System.String) บนประเภท AutoApp_MVC.Controllers.GalleryController ทุกสิ่งที่ฉันทำกับ MVC เป็นครั้งแรก ฉันไม่แน่ใจว่าจะลองทำอะไรอีกในตอนนี้ public ActionResult Browse(string id) { var summaries = /* search using id as search term */ return View(summaries); } public ActionResult Browse(string name1, string name2) { …
100 c#  asp.net-mvc 

5
ASP.NET MVC ส่งผ่าน ID ใน ActionLink ไปยังคอนโทรลเลอร์
ฉันไม่เห็นเพื่อดึง ID ที่ฉันส่งเป็น html.ActionLink ในคอนโทรลเลอร์ของฉันนี่คือสิ่งที่ฉันกำลังพยายามทำ <li> <%= Html.ActionLink("Modify Villa", "Modify", "Villa", new { @id = "1" })%></li> public ActionResult Modify(string ID) { ViewData["Title"] =ID; return View(); } นั่นคือสิ่งที่ฉันทำตามแบบฝึกหัดที่แนะนำ แต่มันใช้งานไม่ได้มันยังใส่ความยาว = 5 ที่ท้าย URL! ขอบคุณล่วงหน้า! แก้ไข: นี่คือเส้นทางที่ฉันใช้เป็นค่าเริ่มต้น routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = …
100 c#  asp.net-mvc 

10
กำหนดรูปแบบของ DateTime ด้วยคำอธิบายประกอบข้อมูลหรือไม่
ฉันมีแอตทริบิวต์นี้ในโมเดลมุมมองของฉัน: [DataType(DataType.DateTime)] public DateTime? StartDate { get; set; } หากฉันต้องการแสดงวันที่หรือใส่วันที่ในกล่องข้อความฉันมีสิ่งเหล่านี้: <%: Model.StartDate %> <%: Html.TextBoxFor(m => m.StartDate) %> เมื่อใดก็ตามที่แสดงวันที่จะแสดงเป็นวันที่01/01/2011 12:00:00 AM แต่ฉันต้องการแสดงเฉพาะ01/01/2011เท่านั้น มีวิธีใช้รูปแบบการแสดงผลกับคำอธิบายประกอบข้อมูลหรือไม่? ฉันไม่ต้องการไปที่ทุกอินสแตนซ์ที่ฉันแสดงวันที่และเพิ่มโค้ดเพื่อจัดรูปแบบ

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 ฉันยังสามารถเรียกใช้แอปพลิเคชันได้และใช้งานได้ ขอบคุณล่วงหน้า.

5
ให้สิทธิ์แอตทริบิวต์ที่มีหลายบทบาท
ฉันต้องการเพิ่มการอนุญาตให้กับคอนโทรลเลอร์สำหรับหลาย ๆ บทบาทพร้อมกัน โดยปกติจะมีลักษณะดังนี้: [Authorize(Roles = "RoleA,RoleB,RoleC")] public async Task<ActionResult> Index() { } แต่ฉันได้จัดเก็บบทบาทของฉันไว้ใน consts เนื่องจากอาจมีการเปลี่ยนแปลงหรือถูกขยายออกไป public const RoleA = "RoleA"; public const RoleB = "RoleB"; public const RoleC = "RoleC"; ฉันไม่สามารถทำได้เนื่องจากต้องทราบสตริงในเวลาคอมไพล์: [Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)] public async Task<ActionResult> Index() { } มีวิธีหลีกเลี่ยงปัญหาหรือไม่? ฉันสามารถเขียน const ซึ่งมีเพียง "RoleA, RoleB, RoleC" - แต่ฉันไม่ชอบสายเวทย์มนตร์และนี่คือสตริงเวทย์มนตร์ …

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, สิทธิ์การเข้าถึงถูกต้อง ฯลฯ


11
ลบ ActionLink พร้อมกล่องโต้ตอบยืนยัน
ฉันพยายามใช้วิธีง่ายๆActionLinkที่จะลบบันทึกโดยใช้ ASP.NET MVC นี่คือสิ่งที่ฉันมีจนถึงตอนนี้: <%= Html.ActionLink("Delete", "Delete", new { id = item.storyId, onclick = "return confirm('Are you sure?');" })%> อย่างไรก็ตามจะไม่แสดงกล่องยืนยัน เห็นได้ชัดว่าฉันพลาดบางอย่างหรือสร้างลิงก์ไม่ถูกต้อง ใครสามารถช่วย?

3
ทำไมต้องสร้างโปรเจ็กต์ ASP.NET 5 Class Library
ฉันกำลังพยายามหาว่า "ASP.NET 5 Class Library" (vNext) C # โปรเจ็กต์เกี่ยวข้องกับ ASP.NET อย่างไร เหตุใดจึงต้องสร้างโปรเจ็กต์ด้วยเทมเพลตนี้แทนที่จะสร้างโปรเจ็กต์ C # "Class Library" แบบปกติ ฉันชอบคุณสมบัติใหม่เช่นไฟล์ project.json มากกว่าไฟล์. csproj เป็นต้น แต่ดูเหมือนจะไม่ถูกต้องที่จะสร้างไลบรารีคลาส "ASP.NET" เมื่อโปรเจ็กต์ไม่มีส่วนเกี่ยวข้องกับ ASP.NET หรือ IIS เป็นต้น . เป็นเพียงโครงการสำหรับชั้นตรรกะทางธุรกิจ ในที่สุดเว็บไซต์ WebApi ASP.NET ใหม่จะอ้างอิงโครงการนี้ แต่ไม่เกี่ยวข้องในตอนนี้ แค่ชื่อไม่ดี? ควรเรียกว่า "vNext Class Library" และไม่ใช้ไอคอนที่ดูเหมือนเว็บแอปหรือไม่


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