简体   繁体   English

在使用剃刀引擎的asp.net mvc 3上,在多个视图之间传递数据的最佳实践是什么?

[英]on asp.net mvc 3 using the razor engine, what's the best practice to pass data between multiple views?

first of all, sorry for my english 首先,对不起我的英语

I am new to ASP.NET MVC and was trying to develop a simple web application using the Razor Engine 我是ASP.NET MVC的新手,正在尝试使用Razor引擎开发简单的Web应用程序

so I have this view called Extract, which accepts an url as input: 所以我有一个称为Extract的视图,它接受一个URL作为输入:

@using (Html.BeginForm("Begin", "Rss"))
{
@Html.LabelFor(m => m.Url) @Html.TextBoxFor(m => m.Url)
<button>Extrair</button>
}

when submited, it will send the url to my controller: 提交后,会将网址发送到我的控制器:

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();
        }

then a new view called Extracted will show all the links extracted from the rss passed: 然后一个名为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>
}

bottom line what I want to ask is: how do I get the ViewData["extractedData"] which I set when loading this View so I can pass it back to the controller and parse all the info inside of it? 我要问的底线是:如何获取加载此View时设置的ViewData [“ extractedData”],以便将其传递回控制器并解析其中的所有信息? because when I click on the button Converter my ViewData is empty and I can't process anything without it =\\ 因为当我单击Converter按钮时,我的ViewData为空,没有它,我将无法处理任何东西= \\

I wouldn't use TempData for passing complex objects between the views. 我不会使用TempData在视图之间传递复杂的对象。 I would also get rid of ViewData. 我还将摆脱ViewData。

Then I would rather have the controller action rendering the view fetch whatever information it needs: 然后,我宁愿控制器操作呈现视图以获取所需的任何信息:

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();
    }
}

have the corresponding view which allows for entering the url ( ~/Views/Rss/Extract.cshtml ): 有相应的视图可以输入网址( ~/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" />
}

and in the other action you are redirecting to: 在另一种操作中,您将重定向到:

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.

相关问题 在Asp.Net MVC 5中实现多个数据库的最佳实践是什么? - What is the best practice for implementing multiple databases in Asp.Net MVC 5? 如何使用 ASP.NET MVC 生成多个包含附加数据的文件并将其返回到 Razor 视图? - How do I generate and return multiple files with additional data to Razor views using ASP.NET MVC? 在 ASP.NET MVC 项目中设置具有不同帐户和视图的多个公司的最佳实践 - Best practice to set up multiple companies with different accounts and views in an ASP.NET MVC project 如何使用HTML unicode转义停止ASP.NET Core 2 MVC的剃刀引擎? - How to stop ASP.NET Core 2 MVC's razor engine using HTML unicode escaping? 在ASP.Net MVC中测试Razor视图 - testing Razor views in ASP.Net MVC 在JavaScript和C#控制器之间传递数据:Asp.Net MVC 4 Razor - Pass data between JavaScript and C# Controller : Asp.Net MVC 4 Razor 在asp.net mvc中返回错误的最佳做法是什么? - what is the best practice for returning a error in asp.net mvc ASP.NET MVC中异步编程的最佳实践是什么? - What is the best practice for asynchronous programming in ASP.NET MVC? 在ASP.net MVC2中返回XML数据的最佳实践 - Best practice for returning XML data in ASP.net MVC2 在ASP.Net MVC中使用DropDownList的最佳编程实践 - Best programming practice of using DropDownList in ASP.Net MVC
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM