首页 > 解决方案 > 将传递的字符串参数引用到局部视图

问题描述

我想将字符串变量传递给局部视图,但我不确定如何将字符串参数显示到局部视图。我尝试了一些我在类似问题上找到的答案,但我得到了以下输出:

“my_app.Models.DogTreatments”。谁能告诉我这是为什么?

这是我的代码:

控制器:

[HttpPost]
    public ActionResult CasIndex(int Sid)
    {

        string treat = dbContext.DogTreatments.Where(x => x.Sid == Sid).SingleOrDefault().ToString();




        //  ViewBag.TList = dbContext.DogTreatments.Where(x => x.Sid == Sid);

        return PartialView("DisplayTreatments", treat);
    }

查看页面:

@Html.Partial("~/Views/Shared/DisplayTreatments.cshtml")

部分观点:

@model string

@{
    Layout = null;
}

@Model

标签: c#asp.netmodel-view-controllercontrollerpartial-views

解决方案


由于您的 LINQ 语句,您看到的内容是正确的。

string treat = dbContext.DogTreatments.Where(x => x.Sid == Sid).SingleOrDefault().ToString();

dbContext.DogTreatments.Where(x => x.Sid == Sid)会过滤所有 DogTreatments Wherex.Sid == Sid

这将.SingleOrDefault()选择一个single object类型DogTreatments或默认(空)。

toString()会将对象类型转换为其字符串格式,因此my_app.Models.DogTreatments

也许这可以满足您的要求:

从 LINQ 查询返回对象:

var treat = dbContext.DogTreatments.Where(x => x.Sid == Sid).SingleOrDefault();
return PartialView("DisplayTreatments", treat);

部分视图将如下所示:

@using my_app.Models.DogTreatments //(this might need to be fixed)
@model DogTreatments

@{
    Layout = null;
}

// in here you can access the DogTreatments object
// These are just examples as I don't know from question what DogTreatments properties are
   @if(Model != null) 
   {
    @Model.Name 
    @Model.Treatment
   }

推荐阅读