वर्तमान में मैं इस तरह एक फ़ोल्डर संरचना है:MVC क्षेत्रों रूटिंग - नियंत्रक फ़ोल्डर फ़ोल्डर के साथ
Area (folder)
- Toolkit (folder)
- Controllers (folder)
- AdminController.cs
- Views (folder)
- Admin (folder)
- Privledges (folder)
- Create.cshtml
- Edit.cshtml
- Delete.cshtml
कौन सा
/Toolkit/{controller}/{action}/{tool}/{id}
करने के लिए अनुवाद यह एक बुरा व्यवहार व्यवहार करने के लिए कार्रवाई की स्थापना के लिए है एक कंट्रोलर की तरह जो स्ट्रिंग {टूल} पैरामीटर और पैरामीटर {id} के आधार पर एक दृश्य को कार्य करता है, जो कार्रवाई में पास हो जाता है?
है कि मैं क्या बात कर रहा हूँ के कार्यान्वयन:
private const string FOLDER_PRIVILEGES = "./Privileges/";
public ActionResult Privileges(string tool, string id = "")
{
dynamic viewModel = null;
ToolViews view; // enum for the views
// Parse the tool name to get the enum representation of the view requested
bool isParsed = Enum.TryParse(tool, out view);
if (!isParsed)
{
return HttpNotFound();
}
switch (view)
{
case ToolViews.Index:
viewModel = GetIndexViewModel(); // call a function that gets the VM
break;
case ToolViews.Edit:
viewModel = GetEditViewModelById(int.Parse(id)); // sloppy parse
break;
default:
viewModel = GetIndexViewModel();
break;
}
// The folder path is needed to reach the correct view, is this bad?
// Should I just create a more specific controller even though it would
// require making about 15-20 controllers?
return View(FOLDER_PRIVILEGES + tool, viewModel);
}
जब मैं एक दृश्य लिखते हैं, मुझे यकीन है कि पथ नाम फ़ोल्डर के लिए प्रयोग किया जाता है बनाने के लिए
@Html.ActionLink("Edit", "./Toolkit/Admin/Priveleges/Edit", "Admin", new { id = item.id })
यह लगता है एक खराब अभ्यास हो, क्योंकि यदि फ़ोल्डर संरचना बिल्कुल बदलती है तो उसे बहुत से रखरखाव की आवश्यकता होगी।
हालांकि, अगर मुझे नियंत्रकों में कार्रवाइयों को तोड़ना है तो उनमें से कई (लगभग 20 समय के साथ अधिक जोड़े गए) होंगे।
यदि मैं जो कर रहा हूं वह एक बुरा अभ्यास है, तो इस तरह के मार्ग की सेवा करने का सबसे अच्छा तरीका क्या होगा?
/Toolkit/Admin/Privileges/Edit/1
मैं करना चाहते से बचने कर निम्नलिखित:
/Toolkit/Admin/CreatePrivileges/1
/Toolkit/Admin/EditPrivileges/1
/Toolkit/Admin/DeletePrivileges/1
कृपया मुझे बताएं कि मैं कोई मतलब नहीं बना रही हूँ करते हैं, क्योंकि मैं में इस सवाल डाल एक कठिन समय चल रहा है शब्द।
शायद मैं गलतफहमी कर रहा हूं, लेकिन अपने पैटर्न का उपयोग करने के लिए आप 'टूल व्यू' एनम के आधार पर उपयुक्त दृश्य मॉडल को वापस करने के लिए एक अलग फ़ंक्शन नहीं बनाने जा रहे हैं? एमवीसी का पूरा बिंदु कॉन्फ़िगरेशन पर सम्मेलन है। चूंकि एमवीसी में सम्मेलन प्रत्येक अलग संभावना को संभालने के लिए एक अलग कार्रवाई है, ऐसा लगता है कि यह आपके दूसरे उदाहरण के साथ जाने के लिए "सर्वोत्तम अभ्यास" है। आईई:/टूलकिट/एडमिन/CreatePrivileges/1। –
मैंने फैसला किया है कि अगर मैं एक पाचन यूआरएल चाहता हूं तो मुझे इसे छोटे नियंत्रकों में तोड़ने की जरूरत है। यह नियंत्रकों का एक समूह होने के लिए थोड़ा परेशान हो सकता है, लेकिन इससे पहले कि मैं पहले क्या करने की कोशिश कर रहा था उससे बेहतर है। करने/टूलकिट/व्यवस्थापक/CreatePrivileges/1 के बजाय मेरे पास/टूलकिट/विशेषाधिकार/बनाएँ/1 है। मुझे एहसास हुआ कि एक बार मेरे पास एकाधिक, छोटे नियंत्रक होने के बाद/व्यवस्थापक/भाग वास्तव में यूआरएल से कोई फर्क नहीं पड़ता था। –
तो मुझे लगता है कि हम सहमत हैं? –