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

ASP.NET MVC 3 เป็นส่วนขยายหลักรุ่นที่สามของ Model-View-Controller สำหรับการพัฒนาเว็บแอปพลิเคชั่นใน. NET Framework

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 บนเพจและทำให้มันเชื่อมโยงกับโมเดลของฉันในโพสต์

13
@ Html.HiddenFor ไม่ทำงานกับ Lists ใน ASP.NET MVC
ฉันกำลังใช้โมเดลที่มีรายการเป็นคุณสมบัติ ฉันกำลังเติมข้อมูลรายการนี้ด้วยรายการที่ฉันคว้าจาก SQL Server ฉันต้องการให้รายการซ่อนอยู่ในมุมมองและส่งต่อไปยังการดำเนินการ POST ในภายหลังฉันอาจต้องการเพิ่มรายการเพิ่มเติมในรายการนี้ด้วย jQuery ซึ่งทำให้อาร์เรย์ไม่เหมาะสำหรับการขยายในภายหลัง โดยปกติคุณจะใช้ @Html.HiddenFor(model => model.MyList) เพื่อให้ฟังก์ชันนี้สำเร็จ แต่ด้วยเหตุผลบางประการรายการใน POST จึงเป็นโมฆะเสมอ คำถามง่ายๆใคร ๆ ก็รู้ว่าทำไม MVC ถึงทำตัวแบบนี้?

4
Ruby on Rails กับ ASP.NET MVC 3 สำหรับ. NET Guy? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน9 ปีที่ผ่านมา ฉันยังใหม่กับ RoR และฉันต้องการเลือกระหว่าง APS.NET MVC3 และ RoR C # นั้นง่ายกว่าสำหรับฉันเพราะฉันทำมานานแล้ว แต่ฉันสงสัยว่ามีจุดใดที่ต้องพิจารณาใช้ RoR มากกว่า. MVC เพื่อพัฒนาเว็บไซต์ในโลกแห่งความจริงหรือไม่? ฉันจะได้อะไรอีกบ้างกับ RoR ที่ฉันไม่สามารถหาได้จาก ASP.NET MVC 3 ที่คุ้มค่ากับการใช้เวลาเพื่อฝึกฝน RoR ฉันแม้ว่าปลั๊กอิน RoR ของชุมชนที่มีอยู่จะเป็นเหตุผลหนึ่ง แต่ดูเหมือนว่าจะไม่ได้รับการจัดระเบียบและดูเหมือนว่าเส้นโค้งการเรียนรู้ในการทำสิ่งที่ถูกต้องจะใหญ่มากจนแทบจะไม่ช่วยประหยัดเวลาสำหรับมือใหม่ได้เลย! ฉันคิดผิดที่นี่และฉันขอขอบคุณสำหรับความคิดเห็นในชีวิตจริงของคุณเกี่ยวกับเรื่องนี้ โปรดทราบว่าฉันยังต้องเรียนรู้ ASP.NET MVC แต่มันฟังดูรวดเร็วสำหรับ. NET Guy! สิ่งที่จะรอข้อเสนอที่จะเป็นคน NET ที่WORTHยกรอกว่า ASP.NET MVC 3 หรือไม่? และโปรดคำแนะนำที่เป็นประโยชน์! …

16
เส้นทางชื่อ“ x” อยู่ในคอลเล็กชันเส้นทางแล้ว ชื่อเส้นทางต้องไม่ซ้ำกัน ข้อยกเว้นกับ ASP.NET MVC 3
ฉันใช้บริการเว็บ ASP.NET MVC 3 และได้รับข้อยกเว้นนี้เป็นระยะ ๆ ติดตามกอง: Server Error in '/' Application. A route named 'ListTables' is already in the route collection. Route names must be unique. Parameter name: name Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more …

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 [ปุ่มลบ] แสร้งทำเป็นว่า [ปุ่มลบ] เป็นปุ่มจริงไม่รู้สึกเหมือนกำลังถ่ายภาพหน้าจอ ขอขอบคุณสำหรับความช่วยเหลือของคุณ.

11
มีปัญหากับคอนโทรลเลอร์หลายตัวที่มีชื่อเดียวกันในโปรเจ็กต์ของฉัน
ฉันพบข้อผิดพลาดต่อไปนี้กับโครงการ ASP.NET MVC 3 ของฉัน: พบหลายประเภทที่ตรงกับคอนโทรลเลอร์ชื่อ 'Home' กรณีนี้อาจเกิดขึ้นได้หากเส้นทางที่ให้บริการคำขอนี้ ("Home / {action} / {id}") ไม่ได้ระบุเนมสเปซเพื่อค้นหาตัวควบคุมที่ตรงกับคำขอ ในกรณีนี้ให้ลงทะเบียนเส้นทางนี้โดยเรียกใช้เมธอด 'MapRoute' ที่โอเวอร์โหลดซึ่งใช้พารามิเตอร์ 'เนมสเปซ' คำขอสำหรับ 'Home' พบตัวควบคุมที่ตรงกันดังต่อไปนี้: MyCompany.MyProject.WebMvc.Controllers.HomeController MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController ฉันมี HomeController ในโฟลเดอร์ตัวควบคุมเริ่มต้นของฉันโดยมีชื่อคลาสเป็น MyCompany.MyProject.WebMvc.Controllers.HomeController เมธอด RegisterRoutes ของฉันใน global.asax ของฉันดูเหมือนว่า: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new …

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 เพื่อจัดรูปแบบในไวยากรณ์นี้

8
วิธีการตั้งค่าคุณสมบัติ ViewBag สำหรับมุมมองทั้งหมดโดยไม่ใช้คลาสพื้นฐานสำหรับคอนโทรลเลอร์
ในอดีตฉันติดคุณสมบัติทั่วไปเช่นผู้ใช้ปัจจุบันเข้ากับ ViewData / ViewBag ในรูปแบบสากลโดยให้ตัวควบคุมทั้งหมดสืบทอดจากคอนโทรลเลอร์พื้นฐานทั่วไป สิ่งนี้ทำให้ฉันสามารถใช้ IoC บนคอนโทรลเลอร์พื้นฐานและไม่เพียงแค่เข้าถึงข้อมูลที่แชร์ทั่วโลกเท่านั้น ฉันสงสัยว่ามีวิธีอื่นในการแทรกรหัสประเภทนี้ในท่อ MVC หรือไม่?

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 หากมีวิธีใดที่ดีกว่าแทนที่จะเปิดบล็อกรหัส@{...}สำหรับการเรียกวิธีเดียว?



11
แสดงเฉพาะวันที่และไม่มีเวลา
ในมีดโกน MVC ฉันใส่วันที่ปัจจุบันในฐานข้อมูลแบบนี้ .. model.Returndate = DateTime.Now.Date.ToShortDateString(); เนื่องจากฟิลด์ฐานข้อมูลเป็นประเภทข้อมูลวันที่และเวลาและฉันกำลังแปลงวันที่ปัจจุบันเป็นรูปแบบสตริงจึงไม่ทำงาน .. ฉันจะทำสิ่งนี้ได้อย่างไร ฉันกำลังทำรูปแบบสตริงเพราะฉันต้องการวันที่ในรูปแบบ mm / dd / yyyy และไม่ใช่ในรูปแบบ mm / dd / yyyy hh: mm: ss time .. แก้ไข: ในคอนโทรลเลอร์ฉันมี var model = new ViewModel(); model.ReturnDate = DateTime.Now; return PartialView("PartialView", model); ใน partialview ฉันมี @Html.EditorFor(model => model.Returndate) นี่คือจุดที่แสดงวันที่เป็นวันที่และเวลาพร้อมกัน ... ฉันต้องการให้แสดงวันที่ ไม่ใช่เวลา. …

6
MVC Razor ดูแบบจำลองของ foreach ที่ซ้อนกัน
ลองนึกภาพสถานการณ์ทั่วไปนี่เป็นเวอร์ชันที่ง่ายกว่าของสิ่งที่ฉันเจอ ที่จริงฉันมีสองชั้นที่ทำรังอยู่บนของฉัน .... แต่นี่คือสถานการณ์ ชุดรูปแบบประกอบด้วยประเภทรายการประกอบด้วย List Product มีรายการ ตัวควบคุมของฉันมีธีมที่ได้รับการเติมเต็มพร้อมด้วยหมวดหมู่ทั้งหมดสำหรับธีมนั้นผลิตภัณฑ์ในหมวดหมู่นี้และคำสั่งซื้อของพวกเขา คอลเลกชันคำสั่งซื้อมีคุณสมบัติที่เรียกว่า Quantity (ท่ามกลางอื่น ๆ อีกมากมาย) ที่ต้องแก้ไขได้ @model ViewModels.MyViewModels.Theme @Html.LabelFor(Model.Theme.name) @foreach (var category in Model.Theme) { @Html.LabelFor(category.name) @foreach(var product in theme.Products) { @Html.LabelFor(product.name) @foreach(var order in product.Orders) { @Html.TextBoxFor(order.Quantity) @Html.TextAreaFor(order.Note) @Html.EditorFor(order.DateRequestedDeliveryFor) } } } ถ้าฉันใช้แลมด้าแทนดูเหมือนว่าฉันจะได้รับการอ้างอิงไปยังวัตถุโมเดลด้านบนเท่านั้น "ธีม" ไม่ใช่สิ่งที่อยู่ในลูป foreach สิ่งที่ฉันพยายามทำนั้นเป็นไปได้หรือไม่หรือฉันประเมินค่าเกินหรือเข้าใจผิดว่าเป็นไปได้หรือไม่ จากข้างต้นฉันได้รับข้อผิดพลาดใน TextboxFor, EditorFor …

6
จะส่งพารามิเตอร์ไปยังมุมมองบางส่วนใน ASP.NET MVC ได้อย่างไร
สมมติว่าฉันมีมุมมองบางส่วนนี้: Your name is <strong>@firstName @lastName</strong> ซึ่งสามารถเข้าถึงได้ผ่านการกระทำของเด็กเท่านั้นเช่น: [ChildActionOnly] public ActionResult FullName(string firstName, string lastName) { } และฉันต้องการใช้มุมมองบางส่วนนี้ในมุมมองอื่นด้วย: @Html.RenderPartial("FullName") กล่าวอีกนัยหนึ่งฉันต้องการที่จะส่งต่อ firstName ans lastName จากมุมมองไปยังมุมมองบางส่วน ฉันควรทำอย่างไร?

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