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

本文关键字:控制器 参数 MVC Action Url asp net 通过 | 更新日期: 2023-09-27 18:24:45

我已经为此寻找了两天的解决方案,但找不到答案,我发现的一切都不起作用,所以我想这里有人可能会帮忙。

我有一个图表,我已经设法用Url从View调用了它。操作如下:

<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.chtml

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

附言:如果这不可能,请告诉我如何做到这一点,我已经尝试了一些不同的方法,但我无法使其工作

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

有一件事你可以在这里尝试。

替换此:

<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" })"/>

为我工作…希望这有帮助!