You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC中如何让PartialViewResult调用的方法生效并返回数据?

问题分析与解决方案

嘿,我一眼就看出你代码里的核心问题了:你在Load方法里重新创建了一个全新的ClsS实例,但这个实例和你在Partial方法中声明的model是完全独立的两个对象!所以你在Load里给属性赋值的操作,根本不会影响到外面要返回的那个model,自然PartialView拿不到任何数据。

下面给你两种可行的修改方案:

方案1:让Load方法返回赋值后的ClsS实例

直接让Load负责创建并初始化ClsS对象,然后把它返回给Partial方法使用:

public PartialViewResult Partial(string id) 
{ 
    // 直接接收Load返回的已初始化对象
    var model = Load(id); 
    return PartialView("_Partial", model); 
} 

public ClsS Load(string id) 
{ 
    Sdetails sdetails = new Sdetails(); 
    var model = new ClsS(); 
    model.Name = sdetails.Namehead(id); 
    model.Link = sdetails.LinkName(id);
    return model; // 返回已经赋值好的实例
} 

方案2:将model作为参数传递给Load方法

因为ClsS是引用类型,传递给方法后修改它的属性会直接影响原对象:

public PartialViewResult Partial(string id) 
{ 
    var model = new ClsS(); 
    // 把已经创建好的model传入Load方法
    Load(model, id); 
    return PartialView("_Partial", model); 
} 

public void Load(ClsS model, string id) 
{ 
    // 先做参数校验,避免空引用异常
    if(model == null) throw new ArgumentNullException(nameof(model));
    
    Sdetails sdetails = new Sdetails(); 
    // 直接修改传入的model的属性,不需要重新new
    model.Name = sdetails.Namehead(id); 
    model.Link = sdetails.LinkName(id);
} 

额外建议:简化代码(可选)

如果Load方法的逻辑并不需要在其他地方复用,其实可以直接把初始化逻辑写在Partial方法里,减少不必要的方法封装:

public PartialViewResult Partial(string id) 
{ 
    var sdetails = new Sdetails();
    // 直接初始化model
    var model = new ClsS
    {
        Name = sdetails.Namehead(id),
        Link = sdetails.LinkName(id)
    };
    return PartialView("_Partial", model); 
} 

内容的提问来源于stack exchange,提问作者User9895

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:06:29