我用ASP.net MVC 3 来做一个项目,现在我更了解它,但也试图了解它与我长期以来一直使用的WebForms世界之间的差异。 之前在WebForms中,你只要把字段放在那里,添加一个按钮,然后创建一个事件,然后处理任何需要处理的后退问题。
例如,我有一个简单的视图, 显示错误的细节。 我想将关于这个错误的一些信息输入到我们的发行跟踪 MS API 。 只需说明错误的主题和内容。 在 HTML 中, 我会做一些类似的事情 :
<form action="@Url.Action("Send")" method="post">
<input id="subject" name="subject" type="text" value="@Model.subject" />
<br />
<input id="content" name="content" type="text" value="@Model.content" />
<br />
<input type="submit" value="Send" />
</form>
我发现在我的控制器中命名我输入的 ID 来匹配参数名称后, 我就可以通过这些参数。 这与您在旧的 http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form- posting-scenarios.aspx” rel = “nofollow” >Scott Guthrie 上看到的相同。
首先,我要在我的错误控制器中调用发送动作, 而不是我的“ 细节 ” 。 这实际上叫做我的“ 发送动作 ”, < 坚固 >, 但随后又重定向到本地主机/ 错误/ 发送, 我不想这样做 。 坚固 >
我希望能够提交此表格, 请求和采取行动, 并对远程 API 进行工作, 然后更新当前页面上的信息, 指出错误已经转移 。
问题提交错误追踪器后,我如何在原始页面上显示DIV, 将内容传回它(例如,与问题追踪器中的问题的链接)?
<强> 更新日期: 强 > 这是我在控制器里所做的:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/redmine/issues.json");
request.Credentials = new NetworkCredential("username", "password");
request.Method = "POST";
request.ContentType = "application/json";
request.Accept = "application/json";
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(" issue : { " +
" project_id : project , " +
" subject : Test issue " +
"}");
}
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
string json = "";
using (StreamReader reader = new StreamReader(stream))
{
json = reader.ReadToEnd();
}
这也是我所认为的(在菲利普的帮助下,
@model webapp.Models.app_errors
<script type="text/javascript">
function SendErrors() {
alert(@Model); // here I get a webapp undefined error
alert(Model); // Model is undefined. If I reference @Model.App_name or another value anywhere, works fine in rest of view
$.ajax({
type: POST , //(probably)
url: ../SendToRedmine ,
cache: false, //(probably)
dataType: json , //(probably)
data: @Model,
success: function(result)
{
alert("The error has been transferred");
//you can also update your divs here with the `result` object, which contains whatever your method returns
}
});
}
</script>
<input type="button" onclick= SendErrors() />