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

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

8
Web API ในโซลูชัน MVC ในโครงการแยกต่างหาก
ฉันกำลังสร้างโครงการ MVC4 ใหม่และการวิจัยทำให้ฉันเชื่อว่าตอนนี้การสื่อสารจากจาวาสคริปต์ไปยังฝั่งเซิร์ฟเวอร์ทำได้ดีกว่าผ่านเฟรมเวิร์ก Web API มากกว่าการดำเนินการของคอนโทรลเลอร์ ความเข้าใจของฉันถูกต้องในเรื่องนี้หรือไม่? ฉันคิดว่าฉันสามารถแบ่งปันคุณลักษณะทั้งหมดของฉันและอื่น ๆ ระหว่างเว็บ API และตัวควบคุม MVC ได้ดูเหมือนจะไม่เปลี่ยนแปลงครั้งใหญ่สำหรับฉัน เมื่อฉันตั้งค่าแอปพลิเคชันฉันต้องการแยกส่วนประกอบออกเป็นโปรเจ็กต์ แผนของฉันคือมีโครงการ MVC และโครงการเว็บ API แต่ฉันได้พบกับปัญหา ตัวอย่างเช่นฉันมี 2 แอพเช่นนี้การตั้งค่าเส้นทางแยกต่างหาก ฯลฯ เป็นต้น ดังนั้นคำถามของฉันคือในแอปพลิเคชัน MVC เฟรมเวิร์ก API ของเว็บควรอยู่ในโปรเจ็กต์เดียวกันหรือควรแยกเว็บ API ออกเป็นโปรเจ็กต์ของตัวเองและแก้ไขปัญหา

9
ASP.NET Identity กับ EF Database First MVC5
เป็นไปได้ไหมที่จะใช้ Asp.net Identity ใหม่กับ Database First และ EDMX หรือเฉพาะกับรหัสก่อน? นี่คือสิ่งที่ฉันทำ: 1) ฉันสร้าง MVC5 Project ใหม่และมี Identity ใหม่สร้างตาราง User และ Roles ใหม่ในฐานข้อมูลของฉัน 2) จากนั้นฉันก็เปิดไฟล์ Database First EDMX ของฉันและลากในตาราง Identity Users ใหม่เนื่องจากฉันมีตารางอื่นที่เกี่ยวข้องกับมัน 3) เมื่อบันทึก EDMX ตัวสร้างฐานข้อมูล POCO แรกจะสร้างคลาส User โดยอัตโนมัติ อย่างไรก็ตาม UserManager และ RoleManager คาดว่าคลาส User ที่สืบทอดมาจาก Identity namespace (Microsoft.AspNet.Identity.IUser) ใหม่ดังนั้นการใช้คลาส POCO …

8
Web Config Transform ไม่ทำงาน
ในแอปพลิเคชัน. NET MVC 3.0 ฉันมีการกำหนดค่าต่อไปนี้ในappSettings: web.config <appSettings> <add key="SMTPHost" value="mail.domain.com"/> <add key="SMTPUsername" value="user@gmail.com"/> <add key="SMTPPort" value="25"/> <add key="SMTPPwd" value="mypassword"/> <add key="EmailFrom" value="notific@gmail.com"/> </appSettings> สำหรับการดีบักฉันได้กำหนดการแปลงการกำหนดค่าต่อไปนี้: web.Debug.config <appSettings> <add key="SMTPPort" value="58" xdt:Transform="Replace" xdt:Locator="Match(key)" /> </appSettings> และฉันเรียกใช้โปรแกรมประยุกต์ในโหมดการแก้ปัญหา แต่ SMTP พอร์ตของฉันจะยังคงได้รับความคุ้มค่าจากไม่web.configweb.Debug.config ใครช่วยแนะนำสิ่งที่อาจผิดพลาดในการกำหนดค่านี้ได้บ้าง

3
บังคับให้ทุกพื้นที่ใช้เลย์เอาต์เดียวกัน
ฉันมีโครงสร้างโครงการต่อไปนี้: / Views / Shared / _Layout; / พื้นที่ / Area1 / มุมมอง / ControllerName / ดัชนี; ... / Areas / AreaN / Views / ControllerName / Index. มีวิธีที่จะบังคับให้ทุกพื้นที่การใช้งานใด ๆ_Layoutเป็นรูปแบบฐาน ? มีวิธีใดบ้างที่จะทำได้โดยไม่ต้องเพิ่มไฟล์_ViewStart (ตัวอย่างเช่นผ่านการกำหนดค่าการกำหนดเส้นทาง) ดูสิ่งนี้ด้วย: ฉันจะระบุเลย์เอาต์ที่แตกต่างกันในไฟล์ ASP.NET MVC 3 razor ViewStart ได้อย่างไร

3
ActionLink htmlAttributes
ทำงาน <a href="@Url.Action("edit", "markets", new { id = 1 })" data-rel="dialog" data-transition="pop" data-icon="gear" class="ui-btn-right">Edit</a> ไม่ทำงาน - ทำไม? @Html.ActionLink("Edit", "edit", "markets", new { id = 1 }, new {@class="ui-btn-right", data-icon="gear"}) ดูเหมือนว่าคุณจะไม่สามารถส่งบางอย่างเช่น data-icon = "gear" ไปยัง htmlAttributes ข้อเสนอแนะ?

4
DisplayNameFor () จากรายการ <Object> ใน Model
ฉันเชื่อว่ามันค่อนข้างง่ายดูเหมือนฉันจะหาวิธีที่ถูกต้องในการแสดงชื่อที่แสดงสำหรับรายการภายในรายการภายในโมเดลของฉันไม่ได้ โมเดลที่เรียบง่ายของฉัน: public class PersonViewModel { public long ID { get; set; } private List&lt;PersonNameViewModel&gt; names = new List&lt;PersonNameViewModel&gt;(); [Display(Name = "Names")] public List&lt;PersonNameViewModel&gt; Names { get { return names; } set { names = value; } } } และชื่อ: public class PersonNameViewModel { public long ID { get; set; …
88 c#  asp.net-mvc  razor  model 

6
ส่งคืนสตริง JSON อย่างชัดเจนจาก Asp.net WEBAPI หรือไม่
ในบางกรณีฉันมี NewtonSoft JSON.NET และในคอนโทรลเลอร์ของฉันฉันเพิ่งคืน Jobject จากคอนโทรลเลอร์ของฉันและทุกอย่างก็ดี แต่ฉันมีกรณีที่ฉันได้รับ JSON ดิบจากบริการอื่นและจำเป็นต้องส่งคืนจาก webAPI ของฉัน ในบริบทนี้ฉันไม่สามารถใช้ NewtonSOft ได้ แต่ถ้าทำได้ฉันจะสร้าง JOBJECT จากสตริง (ซึ่งดูเหมือนว่าเป็นค่าโสหุ้ยในการประมวลผลที่ไม่จำเป็น) และส่งคืนสิ่งนั้นและทุกอย่างจะเข้ากันได้ดีกับโลก อย่างไรก็ตามฉันต้องการส่งคืนสิ่งนี้ง่ายๆ แต่ถ้าฉันส่งคืนสตริงไคลเอ็นต์จะได้รับ JSON wrapper พร้อมบริบทของฉันเป็นสตริงที่เข้ารหัส ฉันจะส่งคืน JSON จากวิธีควบคุม WebAPI ของฉันอย่างชัดเจนได้อย่างไร



4
"เลเยอร์ตรรกะทางธุรกิจ" อยู่ตรงไหนในแอปพลิเคชัน MVC
ก่อนอื่นก่อนที่ใครจะกรีดร้องหลอกลวงฉันมีช่วงเวลาที่ยากลำบากในการสรุปเป็นชื่อเรื่องง่ายๆ ชื่ออื่นอาจเป็น "โมเดลโดเมนกับโมเดล MVC ต่างกันอย่างไร" หรือ "โมเดลคืออะไร" ตามแนวคิดแล้วฉันเข้าใจ Model เป็นข้อมูลที่มุมมองและผู้ควบคุมใช้ นอกเหนือจากนั้นดูเหมือนว่าจะมีความคิดเห็นที่แตกต่างกันมากมายเกี่ยวกับสิ่งที่ประกอบเป็นโมเดล โมเดลโดเมนคืออะไรเทียบกับโมเดลแอปเทียบกับโมเดลมุมมองเทียบกับโมเดลบริการ ฯลฯ ตัวอย่างเช่นในคำถามล่าสุดที่ฉันถามเกี่ยวกับรูปแบบพื้นที่เก็บข้อมูลฉันได้รับแจ้งว่าพื้นที่เก็บข้อมูลเป็นส่วนหนึ่งของโมเดล อย่างไรก็ตามฉันได้อ่านความคิดเห็นอื่น ๆ ว่าควรแยกโมเดลออกจากโมเดลการคงอยู่และเลเยอร์ตรรกะทางธุรกิจ ท้ายที่สุดแล้วรูปแบบพื้นที่เก็บข้อมูลไม่ควรแยกวิธีการคงอยู่ของคอนกรีตออกจากแบบจำลองหรือไม่? คนอื่น ๆ บอกว่ามีความแตกต่างระหว่างโมเดลโดเมนและโมเดล MVC ลองยกตัวอย่างง่ายๆ AccountController ที่มาพร้อมกับโครงการเริ่มต้น MVC ฉันได้อ่านความคิดเห็นหลายประการว่ารหัสบัญชีที่รวมอยู่มีการออกแบบที่ไม่ดีละเมิด SRP ฯลฯ .. ฯลฯ หากมีการออกแบบรูปแบบการเป็นสมาชิกที่ "เหมาะสม" สำหรับแอปพลิเคชัน MVC จะเป็นอย่างไร คุณจะแยกบริการ ASP.NET (ผู้ให้บริการสมาชิกผู้ให้บริการบทบาท ฯลฯ ) ออกจากโมเดลอย่างไร หรือคุณจะทำเลย? วิธีที่ฉันเห็นแบบจำลองควร "บริสุทธิ์" บางทีอาจจะมีตรรกะการตรวจสอบความถูกต้อง .. แต่ควรแยกออกจากกฎทางธุรกิจ (นอกเหนือจากการตรวจสอบความถูกต้อง) ตัวอย่างเช่นสมมติว่าคุณมีกฎทางธุรกิจที่ระบุว่าจะต้องมีคนได้รับอีเมลเมื่อสร้างบัญชีใหม่ …

8
“ 401 Unauthorized” บนไดเร็กทอรี
ฉันถือว่านี่เป็นข้อผิดพลาดของ IIS เนื่องจากจะไม่เกิดขึ้นหากฉันเรียกใช้โปรเจ็กต์บนเครื่องภายในของฉัน ฉันมีสไตล์ชีตอยู่ที่ ~/Content/css ไฟล์ใด ๆ ในไดเร็กทอรีนั้นจะไม่โหลดบนเพจและเมื่อฉันไปที่ไฟล์เหล่านั้นโดยตรงฉันได้รับข้อผิดพลาดของเซิร์ฟเวอร์: 401 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจากข้อมูลประจำตัวไม่ถูกต้อง คุณไม่มีสิทธิ์ดูไดเร็กทอรีหรือเพจนี้โดยใช้ข้อมูลรับรองที่คุณให้มา สิ่งนี้เกิดขึ้นเฉพาะกับไดเรกทอรีนั้นฉันไม่มีปัญหาในการเข้าถึงไฟล์อื่น ๆ มีบางสิ่งที่ฉันต้องทำใน IIS7 เพื่อหยุดสิ่งนี้หรือไม่

6
วัตถุประสงค์ของ ActionName
ประโยชน์ของการตั้งชื่อแทนสำหรับวิธีการดำเนินการโดยใช้แอตทริบิวต์ "ActionName" คืออะไร ฉันไม่เห็นประโยชน์ของมันมากนักในการให้ผู้ใช้มีตัวเลือกในการเรียกวิธีการดำเนินการด้วยชื่ออื่น หลังจากระบุนามแฝงแล้วผู้ใช้สามารถเรียกใช้วิธีการดำเนินการได้โดยใช้นามแฝงเท่านั้น แต่ถ้าจำเป็นต้องใช้เหตุใดผู้ใช้จึงไม่เปลี่ยนชื่อของวิธีการดำเนินการแทนที่จะระบุนามแฝง ฉันจะขอบคุณมากถ้าใครสามารถให้ตัวอย่างการใช้ "ActionName" ในสถานการณ์ที่สามารถให้ประโยชน์ที่ดีเยี่ยมหรือควรใช้ให้ดีที่สุด

4
การผสม Angular และ ASP.NET MVC / Web api?
ฉันมาจากการใช้ ASP.NET MVC / Web API และตอนนี้ฉันเริ่มใช้ Angular แต่ฉันไม่ชัดเจนเกี่ยวกับวิธีที่เหมาะสมในการผสม เมื่อฉันใช้ Angular แนวคิดด้านการตัด MVC ยังคงให้คุณค่าหรือไม่? หรือฉันควรใช้ Web API อย่างเคร่งครัดเพื่อรับข้อมูลสำหรับการเรียก HTTP เชิงมุม เคล็ดลับใด ๆ ที่คุณมีสำหรับ ASP.NET MVC ที่เปลี่ยนไปใช้ Angular จะเป็นประโยชน์

10
ไม่มีรายการ ViewData ประเภท 'IEnumerable <SelectListItem>' ที่มีคีย์ 'xxx'
มีสองสามโพสต์เกี่ยวกับเรื่องนี้ใน Stack Overflow แต่ไม่มีคำตอบที่ดูเหมือนจะแก้ไขปัญหาในสถานการณ์ปัจจุบันของฉัน ฉันมีหน้าที่มีตารางอยู่แต่ละแถวมีช่องข้อความจำนวนหนึ่งและรายการแบบเลื่อนลง รายการแบบเลื่อนลงทั้งหมดจำเป็นต้องใช้ข้อมูล SelectList เดียวกันดังนั้นฉันจึงตั้งค่าดังนี้: ตัวควบคุม ViewData["Submarkets"] = new SelectList(submarketRep.AllOrdered(), "id", "name"); ดู &lt;%= Html.DropDownList("submarket_0", (SelectList)ViewData["Submarkets"], "(none)") %&gt; ฉันใช้การตั้งค่านี้ในหลาย ๆ ที่ แต่ด้วยเหตุผลบางประการในมุมมองนี้ฉันได้รับข้อผิดพลาด: ไม่มีรายการ ViewData ประเภท 'IEnumerable' ที่มีคีย์ 'submarket_0'

4
จะแมป View Model กลับไปยัง Domain Model ในการดำเนินการ POST ได้อย่างไร?
ทุกบทความที่พบในอินเทอร์เน็ตเกี่ยวกับการใช้ ViewModels และการใช้ Automapper จะให้แนวทางของการทำแผนที่ทิศทาง "Controller -&gt; View" คุณนำโมเดลโดเมนพร้อมกับ Select Lists ทั้งหมดไปไว้ใน ViewModel แบบพิเศษและส่งไปยังมุมมอง ชัดเจนและดี มุมมองมีรูปแบบและในที่สุดเราก็อยู่ในการดำเนินการ POST ที่นี่ Model Binders ทั้งหมดจะเข้ามาในฉากพร้อมกับ[เห็นได้ชัด] View Model อื่นซึ่ง[อย่างเห็นได้ชัด] เกี่ยวข้องกับ ViewModel ดั้งเดิมอย่างน้อยก็ในส่วนของรูปแบบการตั้งชื่อเพื่อประโยชน์ในการเชื่อมโยงและการตรวจสอบความถูกต้อง คุณจับคู่กับโมเดลโดเมนของคุณได้อย่างไร? ปล่อยให้มันเป็นการกระทำแทรกเราสามารถใช้ Automapper เดียวกัน แต่ถ้าเป็นการดำเนินการอัปเดตล่ะ? เราต้องดึงข้อมูลเอนทิตีโดเมนของเราจากที่เก็บอัปเดตคุณสมบัติตามค่าใน ViewModel และบันทึกลงใน Repository ภาคผนวก 1 (9 กุมภาพันธ์ 2553):บางครั้งการกำหนดคุณสมบัติของโมเดลไม่เพียงพอ ควรมีการดำเนินการบางอย่างกับ Domain Model ตามค่าของ View Model กล่าวคือควรเรียกวิธีการบางอย่างบน Domain Model …

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