2013-08-14 1 views
3

모달 팝업에서 객체에 대한 피드백을 게시하려고합니다. 팝업의 값은 서버 측에서 채워지지 않습니다. 일 그다지URL.Action 매개 변수의 클라이언트 측 값

<div class="modal fade" id="msg-editor"> 
     <div class="modal-header"> 
      <a class="close" data-dismiss="modal">&times;</a> 
      <h3>Title of the form</h3> 
     </div> 
     <div class="modal-body"> 
      <div class="row-fluid"> 
       <div class="controls span10"> 
        <label class="control-label" for="Title">Title and message</label> 
        <input type="text" 
         class="input-xlarge" id="Title" name="Title" 
         placeholder="Title of the message" /> 
        <textarea class="input-xlarge" id="Message" 
         name="Message" rows="5" cols="9" 
         placeholder="Message"></textarea> 

        <label class="checkbox"> 
         <input type="checkbox" value="option2" id="EmailSelf"> 
         Send a copy of this message to yourself 
        </label> 

       </div> 
      </div> 
     </div> 
     <div class="modal-footer"> 
      <a href="#" class="btn" data-dismiss="modal">Close</a> 
      <a id="Submit" class="btn btn-primary" href="@Url.Action("AddDocumentMessage", "Invoice", new { param1 = $('#myFormSubmit').value, param2 = Model.Obj.Value1, param3 = Model.HashedValue })">Send</a> 
     </div> 
    </div> 

부분은

PARAM1 = $ ('#의 myFormSubmit'). 값이다.

어떻게 클라이언트 측 값을 전달합니까?

답변

5

당신은 할 수 없습니다 :

<a id="Submit" class="btn btn-primary" href="@Url.Action("AddDocumentMessage", "Invoice", new { param1 = "param1_placeholder" , param2 = Model.Obj.Value1, param3 = Model.HashedValue })">Send</a> 

$(function() { 

    var url = $('#Submit').attr('href'); 
    $('#Submit').attr('href', url.replace('param1_placeholder', $('#myFormSubmit').value)); 

}); 
+0

좋아요, 그래서 모달에서 사용자의 의견을 다시 서버로 가져올 수있는 또 다른 방법이 있습니까? 확실하게 이것은 어쨌든 가능합니다. – callisto

+0

@callisto - 답변 됨 updated ... – AminSaghi

1

문제는 서버에서 Razor 코드를 실행하여 URL을 만든 다음 클라이언트에 보낸 것이므로 URL을 만들 때 클라이언트 측 값을 알 수 없습니다. 문서 준비가되었을 때 클라이언트 측 값을 삽입 할 수 있도록 URL에 자리 표시자를 만들어야합니다. 이 같은

그래서 뭔가 ...

<div class="modal-footer"> 
      <a href="#" class="btn" data-dismiss="modal">Close</a> 
<div class="link"></div> 
     </div> 


$(function() { 
var path ="@Url.Action("AddDocumentMessage", "Invoice",new {param2 = Model.Obj.Value1, param3 = Model.HashedValue }) 

$('.link').append('<a id="Submit" class="btn btn-primary" href="'+path+'&param1='+$('#myFormSubmit').val()+'">Send</a>') 

}); 
+0

이 :(작동하지 않는 '정의되지 않음' '# 제출'($를 사용하여 서버 측 이벤트에 들어올 것입니다.) .attr ('href', url .replace ('param1_placeholder', $ ('# Title') .val())); 확인할 클라이언트 측 funct 실행 - onclick에서 텍스트 상자 값을 사용할 수 있습니다. – callisto

+0

링크 태그가 서버에서 돌아 왔을 때 어떻게 보입니까? – asymptoticFault

+0

사용자가 특별히 클릭 할 때까지 URL에 필요한 값을 사용할 수 없다면 확실히 정의되지 않은 값을 얻게됩니다. 나는 그저 문서가 준비되었을 때 값을 얻을 수 있다고 생각했다. 왜냐하면 내가 할 일이 없었기 때문이다. – asymptoticFault

0

당신은 생성하고 당신이 필요로하는 링크를 추가하려고 할 수 있습니다!

는 또 다른 유사한 작업은 다음과 같이 할 수 있습니다 ... 면도기 코드 분석 및 서버 측에서 렌더링 및 서버에, 더 JQuery와 또는 클라이언트 코드 또는 데이터가 없기 때문에 :

<div class="modal-footer"> 
    <a href="#" class="btn" data-dismiss="modal">Close</a> 
    <input type="button" value="Send" onclick="submit()" /> 
</div> 

<script> 
    function submit() { 
     $.ajax({ 
      url: @Url.Action("act", "con") + '?param1=' + $('#myFormSubmit').value + 
               '&param2=' @Model.Obj.Value1 + 
               '&param3=' + @Model.HashedValue, 
      type: 'POST', 
      // ... other ajax options ... 
     }); 
    } 
</script> 

그런 다음, 액션 메소드에 당신은 문자열의 모든 PARAMS을 받게됩니다 :

[HttpPost] 
public ActionResult act(string param1, string param2, string param3) 
    { 
     ViewBag.Message = "Your contact page."; 

     return View(); 
    } 
관련 문제