繁体   English   中英

模型数据未传递给Asp Mvc中的View

[英]Model Data not passing to View in Asp Mvc

我有一个返回局部视图的动作方法

public PartialViewResult GemByMonth(int id,string btn)
{
    if (btn == "bymnthbtn1")
    {
     var birthgembymonth1 = dbcontext.GemStoneByMonths.Where(p => p.GemStoneByMonthId == id).Select(q => new { q.GemEng, q.GemImage });
        return PartialView("_BirthGemByMonthEng", birthgembymonth1);
    }

    return PartialView();
}

我的部分观点是

@model Astrology.Models.GemStoneByMonth

<div class="col-md-12">
    <div class="col-md-6" style="height: 100%;margin-top: 12%;font-size: 2em"> @Model.GemEng</div>
    <div class="col-md-6"><img style="height: 7em; margin-left: 7em; margin-top: 3em" src="data:image;base64,@System.Convert.ToBase64String(Model.GemImage)" /></div>
</div>

我的模特课

  public class GemStoneByMonth
    {

        public int GemStoneByMonthId { get; set; }
        public string EnglishZodiac { get; set; }
        public string MalayalamZodiac { get; set; }
        public string SanskritZodiac { get; set; }
        public string GemEng { get; set; }
        public string GemMal { get; set; }
        public byte[] GemImage { get; set; }
    }

我有2个按钮。 为了区分click事件发生在哪个按钮,我将值添加到我的按钮,该按钮通过字符串'btn'变量访问。

但是传递给局部视图的模型数据没有传递给我的局部视图。 有人可以帮我吗?

默认情况下,Linq查询是延迟加载,直到您显式调用ToList()FirstOrDefault()First() FirstOrDefault()

我相信你想要使用FirstOrDefault() ,如果你想获得单一值。 此外,您需要将模型作为GemStoneByMonth而不是匿名类型传递。

public PartialViewResult GemByMonth(int id, string btn)
{
    if (btn == "bymnthbtn1")
    {
        var entity = dbcontext.GemStoneByMonths
            .FirstOrDefault(p => p.GemStoneByMonthId == id);

        var birthgembymonth1 = new GemStoneByMonth
        {
            GemEng = entity.GemEng,
            GemImage = entity.GemImage
        };    
        return PartialView("_BirthGemByMonthEng", birthgembymonth1);
    }
    return PartialView();
}

然后在从整个模型中选择一些值时使用viewdata。 您只能在选择少数属性的情况下绑定整个模型。

var birthgembymonth1 = dbcontext.GemStoneByMonths.FirstOrDefault(p => p.GemStoneByMonthId == id);
ViewBag.GemEng = birthgembymonth1.GemEng;
ViewBag.GemImage = birthgembymonth1.GemImage;

然后在剃刀视图中使用以下方法获取这些值:

<div class="col-md-12">
    <div class="col-md-6" style="height: 100%;margin-top: 12%;font-size: 2em"> @ViewBag.GemEng</div>
    <div class="col-md-6"><img style="height: 7em; margin-left: 7em; margin-top: 3em" src="data:image;base64,@System.Convert.ToBase64String(ViewBag.GemImage)" /></div>
</div>

当您使用select c#会创建新的动态对象,因此在模型中绑定GemStoneByMonth将不起作用。

暂无
暂无

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

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