[英]What is the best practice for implementing multiple databases in Asp.Net MVC 5?
[英]on asp.net mvc 3 using the razor engine, what's the best practice to pass data between multiple views?
首先,对不起我的英语
我是ASP.NET MVC的新手,正在尝试使用Razor引擎开发简单的Web应用程序
所以我有一个称为Extract的视图,它接受一个URL作为输入:
@using (Html.BeginForm("Begin", "Rss"))
{
@Html.LabelFor(m => m.Url) @Html.TextBoxFor(m => m.Url)
<button>Extrair</button>
}
提交后,会将网址发送到我的控制器:
public ActionResult Begin(ExtractModel m)
{
if (ModelState.IsValid)
{
var extractedData = ExtractorService.Extract(m.Url);
if (extractedData != null)
{
TempData["extractedData"] = extractedData;
return RedirectToAction("Extracted", extractedData);
}
}
return View();
}
然后一个名为Extracted的新视图将显示从传递的rss中提取的所有链接:
public ActionResult Extracted(ExtractedModel m)
{
if (TempData["extractedData"] != null)
{
ViewData["extractedData"] = TempData["extractedData"];
return View(ViewData["extractedData"] as ExtractedModel);
}
else
{
return RedirectToAction("Extract");
}
}
--
@using (Html.BeginForm())
{
foreach (var data in Model.Data)
{
<ul>
<li><a href="@data.Link">@data.Link</a></li>
</ul>
}
<button>Converter</button>
}
我要问的底线是:如何获取加载此View时设置的ViewData [“ extractedData”],以便将其传递回控制器并解析其中的所有信息? 因为当我单击Converter按钮时,我的ViewData为空,没有它,我将无法处理任何东西= \\
我不会使用TempData在视图之间传递复杂的对象。 我还将摆脱ViewData。
然后,我宁愿控制器操作呈现视图以获取所需的任何信息:
public class RssController: Controller
{
public ActionResult Extract()
{
var model = new ExtractModel();
return View(model);
}
[HttpPost]
public ActionResult Begin(string url)
{
if (ModelState.IsValid)
{
return RedirectToAction("Extracted", new { url = url });
}
return View();
}
}
有相应的视图可以输入网址( ~/Views/Rss/Extract.cshtml
):
@model AppName.Models.ExtractModel
@using (Html.BeginForm("Begin", "Rss"))
{
@Html.LabelFor(m => m.Url)
@Html.TextBoxFor(m => m.Url)
<input type="submit" value="Extrair" />
}
在另一种操作中,您将重定向到:
public ActionResult Extracted(string url)
{
var extractedData = ExtractorService.Extract(url);
if (extractedData != null)
{
return View(extractedData);
}
return RedirectToAction("Extract");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.