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

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

9
ผ่าน ViewData เพิ่มเติมไปยังมุมมองบางส่วนที่แข็งแกร่ง
ฉันมีมุมมองบางส่วนที่ใช้พิมพ์ ProductImage เป็นอย่างมากและเมื่อมีการแสดงผลฉันต้องการให้ ViewData เพิ่มเติมบางอย่างซึ่งฉันสร้างขึ้นแบบไดนามิกในหน้าที่มีอยู่ ฉันจะส่งผ่านทั้งวัตถุที่พิมพ์อย่างยิ่งและ ViewData ที่กำหนดเองของฉันไปยังมุมมองบางส่วนด้วยการโทร RenderPartial ได้อย่างไร var index = 0; foreach (var image in Model.Images.OrderBy(p => p.Order)) { Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial index++; }

9
บริการควรส่งคืน DTO เสมอหรือพวกเขาสามารถส่งคืนโมเดลโดเมนได้หรือไม่
ฉันกำลังออกแบบแอพพลิเคชั่นขนาดใหญ่อีกครั้งเราใช้สถาปัตยกรรมหลายชั้นที่ใช้ DDD เรามี MVC พร้อมชั้นข้อมูล (การใช้พื้นที่เก็บข้อมูล) ชั้นโดเมน (คำจำกัดความของรูปแบบโดเมนและอินเทอร์เฟซ - พื้นที่เก็บข้อมูลบริการหน่วยงาน) ชั้นบริการ (การนำบริการไปใช้) จนถึงตอนนี้เราใช้โมเดลโดเมน (เอนทิตีส่วนใหญ่) ครอบคลุมเลเยอร์ทั้งหมดและเราใช้ DTOs เป็นแบบจำลองการดูเท่านั้น (ในตัวควบคุมบริการส่งคืนโมเดลโดเมนและตัวควบคุมสร้างโมเดลการดูซึ่งส่งผ่านไปยังมุมมอง) ฉันได้อ่านบทความมากมายเกี่ยวกับการใช้ไม่ใช้การแมปและการผ่าน DTO ฉันเข้าใจว่าไม่มีคำตอบที่ชัดเจน แต่ฉันไม่แน่ใจว่ามันใช้ได้หรือไม่ส่งคืนโมเดลโดเมนจากบริการไปยังตัวควบคุม ถ้าฉันส่งคืนโมเดลโดเมนมันยังไม่เคยผ่านไปยังมุมมองเนื่องจากตัวควบคุมจะสร้างมุมมองเฉพาะมุมมองเสมอ - ในกรณีนี้มันดูเป็นเรื่องถูกกฎหมาย ในทางกลับกันมันไม่รู้สึกว่าถูกต้องเมื่อโมเดลโดเมนออกจากชั้นธุรกิจ (ชั้นบริการ) บางครั้งบริการจำเป็นต้องส่งคืนวัตถุข้อมูลที่ไม่ได้กำหนดไว้ในโดเมนและจากนั้นเราต้องเพิ่มวัตถุใหม่ไปยังโดเมนที่ไม่ได้ถูกแมปหรือสร้างวัตถุ POCO (นี่น่าเกลียดเนื่องจากบริการบางอย่างกลับโดเมนบางรุ่น ส่งคืน DTO อย่างมีประสิทธิภาพ) คำถามคือ - ถ้าเราใช้โมเดลการดูอย่างเคร่งครัดเป็นไรหรือไม่ที่จะส่งคืนโมเดลโดเมนไปยังตัวควบคุมหรือเราควรใช้ DTOs สำหรับการสื่อสารกับชั้นบริการเสมอหรือไม่ ถ้าเป็นเช่นนั้นจะเป็นการดีที่จะปรับรูปแบบโดเมนตามบริการที่ต้องการ (ตรงไปตรงมาฉันไม่คิดอย่างนั้นเพราะบริการควรใช้โดเมนใด) หากเราควรยึดติดกับ DTO อย่างเคร่งครัดควรกำหนดไว้ในเลเยอร์บริการหรือไม่ (ฉันคิดอย่างนั้น) บางครั้งก็ชัดเจนว่าเราควรใช้ DTOs (เช่นเมื่อบริการดำเนินการตรรกะทางธุรกิจจำนวนมากและสร้างวัตถุใหม่) บางครั้งก็ชัดเจนว่าเราควรใช้เพียงแค่รูปแบบโดเมน (เช่นเมื่อบริการสมาชิกส่งคืนผู้ใช้โลหิตจาง s) …

13
รับชื่อคอนโทรลเลอร์และแอ็คชันจากภายในคอนโทรลเลอร์?
สำหรับเว็บแอปพลิเคชันของเราฉันต้องบันทึกลำดับของรายการที่นำมาและแสดงขึ้นอยู่กับมุมมอง - หรือแม่นยำ - ตัวควบคุมและการกระทำที่สร้างมุมมอง (และรหัสผู้ใช้แน่นอน แต่นั่นไม่ใช่จุดที่นี่) แทนที่จะให้ตัวระบุในการดำเนินการควบคุมแต่ละตัว (เพื่อใช้สำหรับการเรียงลำดับมุมมองบางส่วนของเอาต์พุต DB) ฉันคิดว่ามันจะปลอดภัยและง่ายกว่าในการสร้างตัวระบุนี้โดยอัตโนมัติจากตัวควบคุมและวิธีการกระทำที่ได้รับ เรียกจาก ฉันจะได้รับชื่อของตัวควบคุมและการกระทำจากภายในวิธีการดำเนินการในตัวควบคุมได้อย่างไร หรือฉันต้องการภาพสะท้อนเพื่อสิ่งนั้น? ฉันคิดว่ามันค่อนข้างง่ายขอบคุณล่วงหน้า!

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 หากใครสามารถให้เบาะแสกับฉันเกี่ยวกับวิธีการแก้ไขปัญหานี้ฉันจะขอบคุณมันจริงๆ!

6
วิธีคืนไฟล์ (FileContentResult) ใน ASP.NET WebAPI
ในการควบคุม MVC ปกติเราสามารถส่งออก PDF FileContentResultด้วย public FileContentResult Test(TestViewModel vm) { var stream = new MemoryStream(); //... add content to the stream. return File(stream.GetBuffer(), "application/pdf", "test.pdf"); } แต่เราจะเปลี่ยนมันเป็นApiControllerอย่างไร [HttpPost] public IHttpActionResult Test(TestViewModel vm) { //... return Ok(pdfOutput); } นี่คือสิ่งที่ฉันพยายาม แต่ดูเหมือนจะไม่ทำงาน [HttpGet] public IHttpActionResult Test() { var stream = new MemoryStream(); //... …

26
ASP.NET MVC: ไม่ได้กำหนดคอนสตรัคเตอร์แบบไม่มีพารามิเตอร์ไว้สำหรับวัตถุนี้
Server Error in '/' Application. -------------------------------------------------------------------------------- No parameterless constructor defined for this object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.MissingMethodException: No parameterless constructor …

15
วิธีที่ดีที่สุดในการตัดแต่งสตริงหลังจากป้อนข้อมูล ฉันควรสร้างตัวยึดโมเดลที่กำหนดเองหรือไม่
ฉันกำลังใช้ ASP.NET MVC และฉันต้องการให้ผู้ใช้ทั้งหมดป้อนเขตข้อมูลสตริงที่จะตัดแต่งก่อนที่จะแทรกลงในฐานข้อมูล และเนื่องจากฉันมีแบบฟอร์มการป้อนข้อมูลมากมายฉันกำลังมองหาวิธีที่สวยงามในการตัดแต่งสตริงทั้งหมดแทนที่จะตัดค่าสตริงที่ผู้ใช้ทุกคนมอบให้อย่างชัดเจน ฉันสนใจที่จะรู้ว่าผู้คนกำลังตัดแต่งสตริงอย่างไรและเมื่อไหร่ ฉันคิดว่าบางทีการสร้างแบบจำลองที่กำหนดเองและตัดค่าสตริงใด ๆ ที่นั่น ... ด้วยวิธีนี้ตรรกะการตัดของฉันทั้งหมดจะอยู่ในที่เดียว นี่เป็นวิธีที่ดีหรือไม่? มีตัวอย่างโค้ดที่ทำสิ่งนี้หรือไม่?

30
วิธีทดสอบนั้นไม่สามารถสรุปได้: ไม่ได้ทำการทดสอบ ข้อผิดพลาด?
ฉันมีคลาสทดสอบและต่ำกว่าฉันโพสต์ตัวอย่างทดสอบจากคลาสทดสอบ namespace AdminPortal.Tests.Controller_Test.Customer { [TestClass] public class BusinessUnitControllerTests { private IBusinessUnitRepository _mockBusinessUnitRepository; private BusinessUnitController _controller; [TestInitialize] public void TestInitialize() { _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>(); _controller = new BusinessUnitController(_mockBusinessUnitRepository); } [TestCleanup] public void TestCleanup() { _mockBusinessUnitRepository = null; _controller.Dispose(); _controller = null; } #region Index Action Tests [TestMethod] public void Index_Action_Calls_GetAllBusinessUnit() { …

9
วิธีการจำลองคำร้องขอบนคอนโทรลเลอร์ใน ASP.Net MVC
ฉันมีคอนโทรลเลอร์ใน C # โดยใช้เฟรมเวิร์ก ASP.Net MVC public class HomeController:Controller{ public ActionResult Index() { if (Request.IsAjaxRequest()) { //do some ajaxy stuff } return View("Index"); } } ฉันได้รับคำแนะนำเกี่ยวกับการเยาะเย้ยและหวังว่าจะทดสอบโค้ดด้วย RhinoMocks ต่อไปนี้ var mocks = new MockRepository(); var mockedhttpContext = mocks.DynamicMock<HttpContextBase>(); var mockedHttpRequest = mocks.DynamicMock<HttpRequestBase>(); SetupResult.For(mockedhttpContext.Request).Return(mockedHttpRequest); var controller = new HomeController(); controller.ControllerContext = new …

5
เปลี่ยนเส้นทางไปยัง URI ภายนอกจากตัวควบคุม ASP.NET MVC
ฉันกำลังพยายามเปลี่ยนเส้นทางไปยัง URL ภายนอกจากวิธีการกระทำ แต่ไม่สามารถใช้งานได้ ใครสามารถให้ความกระจ่างในข้อผิดพลาดของฉันได้บ้าง? public void ID(string id) { string url = string.Empty; switch (id) { case "DB2FCB11-579F-4DA2-A68C-A6495B9BAAB5": url = "http://www.somesite.com"; break; } Response.Redirect(url, true); } ขอบคุณคริส

5
ASP.NET MVC: หน่วยควบคุมการทดสอบที่ใช้ UrlHelper
หนึ่งในตัวควบคุมของฉันการกระทำที่ถูกเรียกในคำขอ Ajax กำลังส่งคืน URL ไปยังฝั่งไคลเอ็นต์เพื่อให้สามารถทำการเปลี่ยนเส้นทางได้ ฉันกำลังใช้Url.RouteUrl(..)และระหว่างการทดสอบหน่วยของฉันสิ่งนี้ล้มเหลวเนื่องจากController.Urlพารามิเตอร์ไม่ได้ถูกเติมไว้ล่วงหน้า ฉันพยายามมากของสิ่งอื่น ๆ ในกลุ่มพยายามที่จะต้นขั้วUrlHelper(ซึ่งล้มเหลว) ด้วยตนเองสร้างUrlHelperด้วยRequestContextที่มี stubbed HttpContextBase(ซึ่งล้มเหลวในRouteCollection.GetUrlWithApplicationPathการโทร) ฉันค้นหาโดยใช้ Google แต่ไม่พบสิ่งใดเลยในเรื่องนี้ ฉันกำลังทำสิ่งที่โง่อย่างไม่น่าเชื่อที่ใช้Url.RouteUrlในการดำเนินการควบคุมของฉัน? มีวิธีที่ง่ายกว่านี้ไหม? เพื่อให้แย่ยิ่งขึ้นฉันต้องการทดสอบ URL ที่ส่งคืนในการทดสอบหน่วยของฉัน - ในความเป็นจริงฉันสนใจเพียงแค่รู้ว่ามันกำลังเปลี่ยนเส้นทางไปยังเส้นทางที่ถูกต้อง แต่เนื่องจากฉันคืน URL แทน เส้นทางฉันต้องการควบคุม URL ที่ได้รับการแก้ไข (เช่นโดยการใช้ stubbed RouteCollection) - แต่ฉันยินดีที่จะผ่านการทดสอบของฉันเพื่อเริ่มต้น

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

4
@RenderSection ใน asp.net MVC คืออะไร
@RenderSection มีจุดประสงค์อะไรและทำงานอย่างไร ฉันเข้าใจว่าชุดข้อมูลทำอะไร แต่ฉันยังไม่เข้าใจว่ามันทำอะไรและอาจเป็นสิ่งสำคัญ @RenderSection("scripts", required: false) อาจเป็นตัวอย่างเล็ก ๆ เกี่ยวกับวิธีการใช้งานหรือไม่
170 asp.net-mvc 

10
ตัวแปรเซสชันใน ASP.NET MVC
ฉันกำลังเขียนแอปพลิเคชันเว็บที่จะอนุญาตให้ผู้ใช้เรียกดูหน้าเว็บหลายหน้าภายในเว็บไซต์ที่มีการร้องขอบางอย่าง ข้อมูลทั้งหมดที่ผู้ใช้ป้อนจะถูกเก็บไว้ในวัตถุที่ฉันสร้างขึ้น ปัญหาคือฉันต้องการให้วัตถุนี้เข้าถึงได้จากส่วนใด ๆ ของเว็บไซต์และฉันไม่รู้วิธีที่ดีที่สุดในการทำสิ่งนี้ ฉันรู้ว่าทางออกหนึ่งคือการใช้ตัวแปรเซสชัน แต่ฉันไม่ทราบวิธีการใช้พวกเขาใน asp .net MVC และฉันจะประกาศตัวแปรเซสชันได้ที่ไหน? มีวิธีอื่น ๆ ?

11
วาง HTML ไว้ใน Html.ActionLink () และไม่ต้องเชื่อมโยงข้อความ?
ฉันมีสองคำถาม: ฉันสงสัยว่าฉันจะไม่แสดงข้อความลิงก์ได้อย่างไรเมื่อใช้Html.ActionLink()ในมุมมอง MVC (อันที่จริงนี่คือSite.Master) ไม่มีรุ่นที่โอเวอร์โหลดที่ไม่อนุญาตให้มีข้อความลิงค์และเมื่อฉันลองส่งเป็นช่องว่างstringคอมไพเลอร์บอกฉันว่ามันต้องการสตริงที่ไม่ว่างเปล่า ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ฉันต้องวาง<span>แท็กไว้ในแท็กจุดยึด แต่ไม่สามารถใช้งานHtml.ActionLink();ได้ ฉันต้องการที่จะเห็นผลลัพธ์ต่อไปนี้: ขยายข้อความ ฉันจะวางแท็กไว้ในที่ยึดแท็กใน ASP.NET MVC ได้อย่างไร

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