繁体   English   中英

通过Url.Action向ASP.NET MVC中的控制器发送参数

[英]sending parameter through Url.Action to controller in asp.net MVC

我已经在寻找解决方案已有2天了,但找不到答案,我发现的所有内容都无法正常工作,因此我认为这里的人可能会有所帮助。

我有一个设法通过View使用Url.Action调用的图表,如下所示:

<img src="@Url.Action("DrawPieChart")"/>

但是我不知道如何通过Url.Action传递参数(countryName)的值,所以我可以通过控制器传递它,最后在AnalyzerData.class中使用它

这是控制器:WebTrafficController

 public class WebTrafficController : Controller
{

    public ActionResult WebTraffic()
    {
        AnalzyerData analyzerData = new AnalzyerData();
        //main actionResult that shows stuff not important for this question
        return View(analyzerData);
    }

    public ActionResult DrawPieChart(string countryName)
    {
        AnalzyerData analyzerData = new AnalzyerData();
        return PartialView(analyzerData.getChart(countryName));
    }
}

类:AnalyzerData

public class AnalzyerData
{

    public Chart chartImg { get; set; }

    public Chart getChart(string countryName)
    {
        cWebTrafficDb checkUserStatsWrapper = new cWebTrafficDb();
        checkUserStatsWrapper.cmd.CommandText = string.Format("select user_browser, count(*) from user_stats where User_country = '{0}' group by user_browser", countryName);
        //checkUserStatsWrapper.cmd.CommandText = string.Format("select user_browser, count(*) from user_stats group by user_browser");
        MySqlDataReader reader = checkUserStatsWrapper.cmd.ExecuteReader();
        List<object> result1 = new List<object>();
        List<object> result2 = new List<object>();


        while (reader.Read())
        {
            result1.Add(reader.GetString(0));
            result2.Add(reader.GetString(1));
        }

        chartImg = new Chart(width: 350, height: 350)
            .AddTitle("Naslov")
            .AddSeries(
            name: "Employee",
            chartType: "Pie",
            xValue: result1,
            yValues: result2)
        .Write();

        return chartImg;

    }

查看:Webtraffic.cshtml

 @model WebTraff.Models.AnalzyerData @{ ViewBag.Title = "WebTraffic"; } <div class="inline"> <img src="@Url.Action("DrawPieChart","countryName", new { countryName = "Croatia" })"/> </div> 

附注:如果无法做到这一点,请告诉我该怎么做,我尝试了几种不同的方法,但无法正常工作

您可以在这里尝试一件事。

替换为:

<img src="@Url.Action("DrawPieChart","WebTraffic", new { countryName = "Croatia" })"/>

有了这个 :

<img src="@Url.Action("DrawPieChart","WebTraffic", new { @countryName = "Croatia" })"/>

或者您也可以这样尝试:

@Url.Action("DrawPieChart", "WebTraffic", new { @countryName = "Croatia" })

尝试将@符号放在参数名称之前,并确保参数名称在两侧均相同。

希望这可以帮助。

不知道这是否曾经解决过,但我遇到了同样的问题。 我发现使用您的代码:

<img src="@Url.Action("DrawPieChart","countryName", new { countryName = "Croatia" })"/>

通过浏览器以下html

<img src="/countryName/DrawPieChart?countryName=Croatia">

只需删除第一个“ countryName”以匹配以下内容即可更改代码:

<img src="@Url.Action("DrawPieChart", new { countryName = "Croatia" })"/>

为我工作...希望对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM