Asp.net mvc 使用视图模型和find()单击超链接后查看纵断面

Asp.net mvc 使用视图模型和find()单击超链接后查看纵断面,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,我是MVC4新手,点击视图中的超链接后加载配置文件时遇到问题。我使用视图模型将多个类合并到一个类中。下面我添加了索引视图 <h3>Place</h3> @foreach (var item in Model) { <div class="item1"> <img src="data:image/png;base64,@Convert.ToBase64String(item.pic,0,item.pi

我是MVC4新手,点击视图中的超链接后加载配置文件时遇到问题。我使用视图模型将多个类合并到一个类中。下面我添加了索引视图

<h3>Place</h3>
    @foreach (var item in Model)
    {
        <div class="item1">
            <img src="data:image/png;base64,@Convert.ToBase64String(item.pic,0,item.pic.Length)" width="100" />
            <p class="name">@Html.ActionLink(item.Sp_name, "Details", new { id = item.SPID })</p>

        </div>

    }
地点
@foreach(模型中的var项目)
{

@Html.ActionLink(item.Sp_name,“Details”,新的{id=item.SPID})

}
单击“索引”视图中的超链接后。我想加载它的配置文件。我在控制器中的何处添加查找(id)有问题。下面给出的是我的视图配置文件控制器方法

public ActionResult Details(int id = 0)
    {

        List<ImageData> details = new List<ImageData>();
        var sp_details = (from s in db.service_provider
                          join p in db.pictures on s.SPID equals p.SPID
                          join c in db.cities on s.City_ID equals c.City_ID
                          where s.SPID == id
                          select new { s.Sp_name, s.Sp_location, s.Sp_rate, s.service_type, c.Cityname, p.pic });


        foreach (var item in sp_details)
        {
            ImageData SpView = new ImageData(); // ViewModel
            SpView.Sp_name = item.Sp_name;
            SpView.Sp_location = item.Sp_location;
            SpView.Cityname = item.Cityname;
            SpView.Sp_rate = item.Sp_rate;
            SpView.pic = item.pic;

            details.Add(SpView);
        }
        if (details == null)
        {
            return HttpNotFound();
        }
        return View(details);
    }
public ActionResult详细信息(int id=0)
{
列表详细信息=新列表();
var sp_details=(来自db.service_提供程序中的s)
将p连接到s.SPID上的db.pictures中等于p.SPID
在s.City\u ID上的db.cities中加入c等于c.City\u ID
其中s.SPID==id
选择新的{s.Sp_名称、s.Sp_位置、s.Sp_比率、s.service_类型、c.Cityname、p.pic});
foreach(sp_详细信息中的var项目)
{
ImageData SpView=新建ImageData();//视图模型
SpView.Sp_name=item.Sp_name;
SpView.Sp_位置=item.Sp_位置;
SpView.Cityname=item.Cityname;
SpView.Sp_rate=item.Sp_rate;
SpView.pic=item.pic;
详细信息。添加(SpView);
}
如果(详细信息==null)
{
返回HttpNotFound();
}
返回视图(详细信息);
}
单击视图中的超链接后,有人能帮我加载配置文件吗。

试试这个:

@Html.ActionLink(item.Sp_name, "Details", new { id = item.SPID },null)
试试这个:

@Html.ActionLink(item.Sp_name, "Details", new { id = item.SPID },null)

我认为将ID从视图传递到控制器在他的案例中不是问题问题问题ID如何为从视图传递的特定ID选择配置文件我认为将ID从视图传递到控制器在他的案例中不是问题问题ID如何为从视图传递的特定ID选择配置文件我不完全理解您想要做什么,你能更具体地说,什么是find(id),问题在哪里?我想在controller
var a=dbContext.service\u provider.find(id)
中添加类似于controller
var sp\u details=(从…
中的s开始使用
var sp\u details=db.service\u provider.find)
或SingleOrDefault()代替find()并使用System.Linq;using System.Linq.Expression;添加
显示数据不属于一个模型类,因此我使用ViewModel显示数据。
ImageData
是我的ViewModel在这种情况下,您不能使用默认的Find(),只能在服务提供商中创建函数Find()这将返回您需要的所有数据。我不完全理解您想做什么,您能更具体地说,查找(id)什么,问题在哪里我想添加一些类似于控制器
var a=dbContext.service\u provider.find(id)
所以在您的行
var sp\u详细信息=(从…
中的s使用
var sp\u details=db.service\u provider.Find(id)
或SingleOrDefault()代替Find()并使用System.Linq;using System.Linq.Expression;
添加
显示数据不属于一个模型类,因此我使用ViewModel显示数据。
ImageData
是我的ViewModel在这种情况下,您不能使用默认的Find(),您只能在服务提供商中创建函数Find(),该函数将返回您需要的所有数据。