Url.Action एक & amp डालता है; मेरे url में, मैं इसे कैसे हल कर सकता हूं?


90

मैं चर वस्तुओं को भेजना चाहता हूं और इकाईमॉडल को ActionResult CreateNote में भेजना चाहता हूं:

public ActionResult CreateNote(
        [ModelBinder(typeof(Models.JsonModelBinder))]
        NoteModel Model, string cmd, long? itemId, string modelEntity)

इस जावास्क्रिप्ट के साथ:

Model.meta.PostAction = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});

हालाँकि, भेजा जा रहा यूआरएल है

localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44     

मैं भेजना चाहता हूँ

localhost:1304/Administration/blue/en-gb/Entity/CreateNote?modelEntity=Phrase&itemId=44

मैं उरल को कैसे रोक सकता हूं। मैं दूसरे चर को सामने लाना चाहता हूं जिसे मैं भेजना चाहता हूं?


आपको क्या लगता है कि &यह ठीक नहीं है?
Oded

1
क्योंकि जब मैं Actionpointult को एक ब्रेकपॉइंट के साथ देखता हूं, जब मेरे पास स्थानीयहोस्ट है: 1304 / प्रशासन / नीला / en-gb / Entity / CreateNote? ModelEntity = वाक्यांश और amp; जब मैं उन्हें जावास्क्रिप्ट में घुमाता हूं और लोकलहोस्ट प्राप्त करता हूं: 1304 / प्रशासन / नीला / en-gb / Entity / CreateNote; itemId = 44 & amp; modelEntity = वाक्यांश आइटम II = 44 और modelEntity = null। इसलिए मुझे लगता है कि इसे & amp;
नीक डी क्लेन

4
@Oded - क्योंकि डेटा HTML में डाला जा रहा है, HTML नहीं।
क्वेंटिन

जवाबों:


127

मैंने कल नोटिस नहीं किया कि आपने &सोचा था कि एसओ संपादक ने उसे बदल दिया था। के एन्कोड को रोकने के लिए अपने Url.Action()को लपेटने का प्रयास करें @Html.Raw()

या वैकल्पिक रूप से केवल Url.Action()कंट्रोलर / एक्शन बिट और दो मापदंडों को पोस्ट डेटा के रूप में पास करें बजाय सीधे url पर, jQuery को आपके लिए उस तरह से सॉर्ट करना चाहिए।


43
यह समाधान काम करता है, लेकिन Url.Action भी एन्कोड क्यों हो जाता है? अप्रत्याशित व्यवहार के बारे में बात करें।
जेरी

13

मुझे लगता है कि आपकी समस्या यह Model.meta.PostActionहै कि - क्या संपत्ति एक है string?

यदि ऐसा है तो मेरा अनुमान है कि आप इसे पृष्ठ के साथ जोड़ रहे हैं:

  • उस्तरा: @Model.meta.PostAction
  • ASP दृश्य इंजन: <%:Model.meta.PostAction%>

जो दोनों स्वचालित रूप से आपके लिए उस स्ट्रिंग को एनकोड करते हैं।

इसे ठीक करने के लिए या तो उपयोग करें @Html.Raw()/ <%=(जो दोनों को सांकेतिक शब्दों में बदलना नहीं है) या PostActionसंपत्ति को ऐसा बनाएं IHtmlStringजो जानता है कि यह पहले से ही एन्कोडेड है:

string actionUrl = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId, modelEntity = modelEntity});
Model.meta.PostAction = new HtmlString(actionUrl);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.