Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何将字符串呈现到Layout.cshtml文件?_Asp.net Core_Model View Controller_Razor - Fatal编程技术网

Asp.net core 如何将字符串呈现到Layout.cshtml文件?

Asp.net core 如何将字符串呈现到Layout.cshtml文件?,asp.net-core,model-view-controller,razor,Asp.net Core,Model View Controller,Razor,我有一个在HomeController中返回字符串的方法 public string MyLocation() { return "NYC"; } 我试图在\u Layout.cshtml文件的导航项中显示标记内返回的字符串 <li> <a href="#"> <p font-size:14px"> </p> </a> </li> 您不能将数据发送到布局页(母版页) 将您的位置存储在会话变量中,并在

我有一个在HomeController中返回字符串的方法

public string MyLocation()
{
    return "NYC";
}
我试图在
\u Layout.cshtml
文件的导航项中显示
标记内返回的字符串

<li>
    <a href="#"> <p font-size:14px">  </p> </a>
</li>

  • 您不能将数据发送到布局页(母版页)

    将您的位置存储在会话变量中,并在master中访问它 页面如下:

    \u布局
    页面将为:

         <li>
             <a    href="#"> 
                <p font-size:14px">  
                     @HttpContext.Current.Session["MyLocation"].ToString()   
                </p>
             </a> 
        </li>
    

  • 这可能会对您有所帮助。

    布局文件对使用它的视图(.cshtml文件)一无所知,而视图除了名称之外,对布局文件也一无所知

    连接两者的正确方法如下:

    (1)具有\u布局。cshtml包含
    @RenderBody()
    语句。此时将显示视图生成的输出

    (2)让您的视图文件按名称引用布局文件,也最好使其使用
    模型
    类,并使其呈现部分HTML:

    // file Views/Location/MyLocation.cshtml
    
    @model YourProject.Models.Location   // See part (3) below
    
    @{
        Layout = "_Layout";
    }
    
    <h2>My Location</h2>
    
    <div>
        City: @(Model.City)
    </div>
    
    (4)让控制器中的动作方法创建一个模型对象,并将其发送到视图:

    // file Controllers/LocationController.cs
    
    namespace YourProject.Controllers
    {
        public class LocationController : Controller
        {
            public IActionResult MyLocation()
            {
                var model = new Location { City = "NYC" };
                return View(model); // This will start MyLocation.cshtml and pass 'model' as a parameter into it
            }
        }
    }
    
    更多信息请点击此处:


    作为替代,您可以使用。然后可以省略
    Location
    Model类,但也将失去Intellisense和编译时有效性检查的所有优点

    // file Views/Location/MyLocation.cshtml
    
    @{
        Layout = "_Layout";
    }
    
    Location: @(ViewBag.Location) <i>(from ViewBag)</i>
    
    可以使用ViewBag方法、模型方法,甚至可以将两者结合使用


    您也可以在_布局文件中使用ViewBag,但是您必须确保每个控制器操作方法都在
    ViewBag
    中提供值,因为它在调用之间是而不是保留的。

    它说。名称会话在当前上下文中不存在。请检查是否导入了系统命名空间。它应该是有效的,我想这个方法是针对.NET框架的,我使用的是核心,它不起作用。看看这个。这可能会对您有所帮助。我正在尝试将其呈现到_Layout.cshtml文件中,而不是Location.cshtml中……请参阅我刚才添加的替代方案。
    // file Controllers/LocationController.cs
    
    namespace YourProject.Controllers
    {
        public class LocationController : Controller
        {
            public IActionResult MyLocation()
            {
                var model = new Location { City = "NYC" };
                return View(model); // This will start MyLocation.cshtml and pass 'model' as a parameter into it
            }
        }
    }
    
    // file Views/Location/MyLocation.cshtml
    
    @{
        Layout = "_Layout";
    }
    
    Location: @(ViewBag.Location) <i>(from ViewBag)</i>
    
    // file Controllers/LocationController.cs
    
    namespace YourProject.Controllers
    {
        public class LocationController : Controller
        {
            public IActionResult MyLocation()
            {
                ViewBag.Location = "NYC";
                return View(); // This will start MyLocation.cshtml without a 'model'.
            }
        }
    }