gpt4 book ai didi

asp.net-mvc - 使用 html.actionlink 将模型从 View 传递到 Controller

转载 作者:行者123 更新时间:2023-12-02 06:42:00 26 4
gpt4 key购买 nike

我正在尝试将模型数据从强类型 View 获取到 Controller 。使用提交按钮就可以了,我可以获取数据。现在我想用 html.actionlink 达到同样的效果。这就是我所拥有的:查看:

@model WordAutomation.Models.Document    
@{
ViewBag.Title = "Document";
}
<script type="text/javascript">
$(function () {
$("#dialog").dialog();
});
</script>

<h2>Document</h2>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
<legend>Document</legend>

<div class="editor-label">
@Html.LabelFor(model => model.ClientTitle)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ClientTitle)
@Html.ValidationMessageFor(model => model.ClientTitle)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.ClientFullName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ClientFullName)
@Html.ValidationMessageFor(model => model.ClientFullName)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.ClientCustomSSN)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ClientCustomSSN)
@Html.ValidationMessageFor(model => model.ClientCustomSSN)
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}

<div>
@Html.ActionLink("Preview", "PreviewWordDocument", "Home", null, new { id = "previewLink" })

</div>

<div id="dialogcontainer">
<div id="dialogcontent"><input type="submit" value="Create" /> </div>
</div>

@section Scripts {

<script type="text/javascript">

$(document).ready(function() {

$("#dialogcontainer").dialog({
width: 400,
autoOpen:false,
resizable: false,
title: 'Test dialog',
open: function (event, ui) {
$("#dialogcontent").load("@Url.Action("PreviewWordDocument", "Home")");
},
buttons: {
"Close": function () {
$(this).dialog("close");
}
}
});

$("#previewLink").click(function(e) {
e.preventDefault();
$("#dialogcontainer").dialog('open');
});

});

</script>
}

Controller :

public ActionResult Document()
{
return View();
}

[HttpPost]
public ActionResult Document(WordAutomation.Models.Document model)
{
Models.Utility.EditWord word = new Models.Utility.EditWord();
word.EditWordDoc(model);
return View("Display", model);
}

public ActionResult PreviewWordDocument()
{
var image = Url.Content("~/Content/preview.jpeg");

return PartialView((object)image);
}

文档actionresult可以获取模型,但我想知道如何从actionlink中获取将触发PreviewWordDocument操作的值。

提前致谢,Laziale

最佳答案

只能使用提交按钮将表单发布到其操作属性指定的 URL。

但是,您可以使用 jQuery post 方法将表单数据发送到不同的 URL,并在发送之前手动验证表单。这样,您可以将表单数据发送到 PreviewWordDocument Controller 方法并处理响应,以便在所需的 div 中显示预览。(如果您为表单提供一个 id 将会很有帮助,这样您就可以使用 jQuery 轻松找到它)

因此,预览链接的点击事件处理程序将如下所示:

$("#previewLink").click(function(e) {
e.preventDefault();
if($("#YourFormId").valid()){
$("#dialogcontainer").dialog('open');
}
});

在对话框的打开函数中,您将使用 jQuery ajax 函数将表单(已验证)发布到预览 Controller 方法。响应将被加载到dialogContent div中:

    $.ajax({
type: "POST",
url: $("#previewLink").attr("href"), //the preview controller method
data: $("#YourFormId").serialize(),
success: function (data) {
//load ajax response into the dialogContent div
$("#dialogcontent").html(data);
},
error: function(xhr, error) {
$("#YourFormId").prepend('<div id="ajaxErrors"></div>')
.html(xhr.responseText);
}
});

现在您将能够在 PreviewWordDocument 操作中接收整个文档:

public ActionResult PreviewWordDocument(WordAutomation.Models.Document model)
{
var image = Url.Content("~/Content/preview.jpeg");

return PartialView((object)image);
}

关于asp.net-mvc - 使用 html.actionlink 将模型从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com