c# कैसे asp.net MVC दृश्य में एक मॉडल सेट करने के लिए सशर्त?




asp.net-mvc model (2)

मैं एएसपी.नेट एमवीसी में शुरुआत कर रहा हूं।
मेरे पृष्ठ में एक आंशिक दृश्य है जिसे _ Navigation कहा जाता है कि मैं पुनः उपयोग कर रहा हूं।
अगर उपयोगकर्ता "होम" में है, तो नेविगेशन के <a> "" को इंगित करने की आवश्यकता है, अगर उपयोगकर्ता "सेवा" पृष्ठ में है, नेविगेशन का href अन्य यूआरएल को इंगित करने की आवश्यकता है, चलो "www.mysite.com" कहें यह इस मेनू में अन्य लिंक के साथ भी होगा

मैंने निम्नलिखित करने की कोशिश की

@if (ViewContext.RouteData.Values.ContainsValue("Services"))
{
    @model MySite.Models.ServicesNavigation
}
else
{
    @model MySite.Models.HomeNavigation
}

लेकिन यह कहता है कि मेरे पास केवल एक ही मॉडल हो सकता है।
इसे कैसे हल करें?

https://code.i-harness.com


आप Interface का उपयोग करने का प्रयास कर सकते हैं।

public interface INavigation
{
    //Your props here
}

public class ServicesNavigation : INavigation
{
}

public class HomeNavigation: INavigation
{
}

फिर आपका दृश्य प्रकार इनाइजिकेशन के हो सकता है

@model INavigation

और अपनी शर्तों के आधार पर आपके नियंत्रक में आप चाहते हैं कि INavigation के INavigation को पारित कर सकते हैं।

.......
INavigation model;
if(conditionOneIsMet)
{
    model = new ServicesNavigation();    
}
else
{
    model = new HomeNavigation();
}

return View(model);

आपका दृश्य वास्तव में WebViewPage<TModel> वर्ग से लिया गया वर्ग है @model कथन मॉडल के प्रकार को परिभाषित करता है ( TModel ) क्योंकि यह संकलित समय वक्तव्य है, आप इसे चलाने के समय में नहीं बदल सकते।

यदि आपको दो अलग-अलग मॉडलों की जरूरत है, तो आपको दो अलग-अलग दृश्य मिलना चाहिए।





asp.net-mvc-partialview