Url.Action은 & amp; 내 URL에서 어떻게 해결할 수 있습니까?


90

변수 itemId 및 entityModel을 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});

그러나 전송되는 URL은

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

나는 보내고 싶다

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

보내려는 두 번째 변수 앞에 &를 넣는 Url.Action을 어떻게 방지 할 수 있습니까?


그것이 &좋지 않다고 생각하는 이유는 무엇입니까 ?
Oded

1
중단 점이있는 ActionResult를 볼 때 localhost : 1304 / Administration / blue / en-gb / Entity / CreateNote? modelEntity = Phrase & amp; itemId = 44 modelEntity = Phrase 및 itemId = null이있을 때 때문입니다. 자바 스크립트로 돌려서 localhost : 1304 / Administration / blue / en-gb / Entity / CreateNote? itemId = 44 & amp; modelEntity = Phrase itemId = 44 및 modelEntity = null을 얻습니다. 그래서 & amp;
Niek de Klein

4
@Oded — 데이터가 HTML이 아닌 JavaScript에 삽입되기 때문입니다.
Quentin

답변:


127

나는 그것이 &SO 편집자라고 생각했다는 것을 어제 눈치 채지 못했습니다 . 당신의 포장 시도 Url.Action()에서 a를@Html.Raw() &의 인코딩을 방지 할 수 있습니다.

또는 Url.Action()컨트롤러 / 액션 비트 만 url에 직접 전달하지 않고 두 매개 변수를 포스트 데이터로 전달하면 jQuery는 &를 그런 방식으로 정렬해야합니다.


43
이 솔루션은 작동하지만 Url.Action이 인코딩되는 이유는 무엇입니까? 예상치 못한 행동에 대해 이야기하십시오.
Jerry

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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.