Asp.net mvc 4 URL.Action参数中的客户端值
我试图从一个模态弹出窗口发布一个对象的反馈。弹出窗口上没有从服务器端填充的值Asp.net mvc 4 URL.Action参数中的客户端值,asp.net-mvc-4,twitter-bootstrap,url.action,Asp.net Mvc 4,Twitter Bootstrap,Url.action,我试图从一个模态弹出窗口发布一个对象的反馈。弹出窗口上没有从服务器端填充的值 <div class="modal fade" id="msg-editor"> <div class="modal-header"> <a class="close" data-dismiss="modal">×</a> <h3>Title of the form</
<div class="modal fade" id="msg-editor">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</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')。值
如何传递客户端值?您遇到的问题是,Razor代码在服务器上执行以创建URL,然后发送到客户端,因此在创建URL时客户端值未知。您需要在URL中创建占位符,以便在文档准备就绪时插入客户端值 比如说:
<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));
});
$(函数(){
var url=$('#Submit').attr('href');
$('#Submit').attr('href',url.replace('param1#占位符',$('#myFormSubmit').value));
});
您可以尝试生成并附加所需的链接:
<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+'¶m1='+$('#myFormSubmit').val()+'">Send</a>')
});
$(函数(){
var path=“@Url.Action”(“AddDocumentMessage”,“Invoice”,新的{param2=Model.Obj.Value1,param3=Model.HashedValue})
$('.link')。追加('')
});
你不能
因为razor代码是在服务器端解析和呈现的,而在服务器端,没有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 +
'¶m2=' @Model.Obj.Value1 +
'¶m3=' + @Model.HashedValue,
type: 'POST',
// ... other ajax options ...
});
}
</script>
这不起作用:(.“Undefined”是在服务器端事件中使用$('#Submit').attr('href',url.replace('param1#placeholder',$('#Title').val()输入的内容);运行clientside funct以检查-文本框值在onclick上可用。链接标记从服务器返回时是什么样子的?如果URL所需的值在用户单击特定内容之前不可用,则肯定会得到一个未定义的值。我只是假设在单击时可以检索该值cument已经准备好了,因为我没有其他事情要做。好的,那么有没有其他方法可以让用户的评论从modal返回到服务器?当然这是可能的。
[HttpPost]
public ActionResult act(string param1, string param2, string param3)
{
ViewBag.Message = "Your contact page.";
return View();
}