索引 - 查看
@model SendAFaxWeb.Models.Send
//view start here
<body>
<div>
<h2>Test Upload File</h2>
<form action="@Url.Action("Index", "Home")" id="form" method="post" enctype="multipart/form-data">
@Html.AntiForgeryToken()
<div class="form-group">
<label>Fax Number:</label>
@Html.TextBoxFor(m => m.Recipients[0].Number)
</div>
<div class="form-group">
<label>Select File:</label>
<input type="file" name="files" id="file" multiple="multiple" onchange="this.form.submit();" />
</div>
<div>
@if (Model != null)
{
foreach (var item in Model.Documents)
{
<li>FileName: @item.Name</li>
}
}
</div>
</form>
<input type="submit" name="send" value="Send" id="btnSend" />
</div>
</body>
Javascript- javascript无效
<script type="text/javascript">
$(document).ready(function () {
$("#btnSend").click(function () {
alert("button click");
e.preventDefault();
var model = @Html.Raw(Json.Encode(Model))
$.ajax({
type: 'post',
url: '@Url.Action("Send", "Home")',
data: JSON.stringify({ contact: model }),
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (data) {
alert(data);
}
});
});
});
</script>
控制器
public ActionResult Send(Send contact)
{
//some code here
}
我试图通过使用javascript传递模型到控制器,但它 不工作javascript中的警报也不会弹出。任何人都能说出来 我的代码有什么问题。
答案 0 :(得分:0)
您已实现跨源安全性,例如: @ Html.AntiForgeryToken()。 因此,您必须在 AJAX 调用中将该值作为参数传递,如下所示。
<强> AJAX:强>
data:{__RequestVerificationToken:$('[name=__RequestVerificationToken]').val();}
此外,您还必须在控制器中添加属性。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Send(Send contact)
答案 1 :(得分:0)
您可以使用以下代码
来完成@model PK.LifeStyles.Web.Models.Reimbursement //model declaration on top
<button type="button" onclick="location.href='@Url.Action("ActionName", "ControllerName",Model)'">
你的代码应该看起来像这样
public ActionResult Save(Reimbursement data)
{
// your code
}
//just some random class
public class Reimbursement{
public string Destination { get; set; }
}