Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
C# 在视图MVC.NET中使用导入引用中的类_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 在视图MVC.NET中使用导入引用中的类

C# 在视图MVC.NET中使用导入引用中的类,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我不确定这个标题是否合适,但我不认为有更好的标题 经过多次搜索,我没有找到解决办法 我是MVC.NET的新手。 我构建了一个web应用程序并添加了一个dll引用,我想在视图中使用它。 我成功地使用了我在视图中构建的类 模型: using Mydll; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MyWebApplication.Models {

我不确定这个标题是否合适,但我不认为有更好的标题

经过多次搜索,我没有找到解决办法

我是MVC.NET的新手。 我构建了一个web应用程序并添加了一个dll引用,我想在视图中使用它。 我成功地使用了我在视图中构建的类

模型:

using Mydll;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyWebApplication.Models
{
    public class myClass
    {
        public VaultsOnServer vaults { get; set; }
        private MFilesServerApplication oServerApp = new 
        MFilesServerApplication();
        private MFServerConnection oVaultConnection = new 
        MFServerConnection();
        private Vault vault { get; set; }

        public bool checkIfLoginAccountExist(string i_Username)
        {
            LoginAccount loginAccount = null;
            loginAccount = 
            oServerApp.LoginAccountOperations.GetLoginAccount(i_Username);

            return loginAccount != null ? true : false;
        }

        public VaultsOnServer getAllVaults()
        {
            vaults = oServerApp.GetVaults();
            return vaults;
        }
    }
}
控制员:

using MyWebApplication.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Mydll;

namespace MyWebApplication.Controllers
{
public class HomeController : Controller
{
    myClass myclass= null;
    User user = null;
    public ActionResult Home()
    {
        return View("~/Views/Home/Login.cshtml");
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult CheckUser(User objUser)
    {
        VaultsOnServer vaults = null;
        bool ifUserExist = false;
        if (ModelState.IsValid && InputValidation.onlyLetters(objUser.Username) && InputValidation.checkPassword(objUser.Password))
        {
            if (objUser != null)
            {
                if (myclass== null)
                {
                    myclass= new myClass();
                }

                ifUserExist = mfiles.checkIfLoginAccountExist(objUser.Username);
                if(ifUserExist == true)
                {
                    user = objUser;
                    vaults = myclass.getAllVaults();
                    Session["Vaults"] = vaults;
                }
                return View("~/Views/Home/ChooseVault.cshtml", vaults);
            }
        }
        return View("~/Views/Home/Login.cshtml");
    }

    [HttpPost]
    public ActionResult Login(VaultOnServer vault)
    {
        if(user != null)
        {
            return View();
        }

        return View();
    }
  }
}
return View("Login", new MyModelType());
观点:

@{
    ViewBag.Title = "CooseVault";
}

<h2>CooseVault</h2>

@using (Html.BeginForm("Login", "Home", FormMethod.Post))
{
    <div id="formCheckUser">
        <fieldset id="loginAccount">
            <legend id="loginTitle">Choose Vault</legend>
            <select id="dropdownOne" name="dropdownOne">
                <option value="">--pick--</option>
                @foreach (var item in )
                {
                    <option value="@item" selected="selected">@item.Name</option>
                }
            </select>
        </fieldset>
    </div>
}
@{
ViewBag.Title=“CooseVault”;
}
库塞瓦特
@使用(Html.BeginForm(“Login”、“Home”、FormMethod.Post))
{
选择保险库
--挑--
@foreach(中的var项目)
{
@项目名称
}
}
在控制器中,我发送了函数CheckUser来查看dll(Mydll)中类类型的对象,我想在视图中与类类型一起使用

我可以这样做吗


谢谢

如果我正确理解你的问题,是的,你可以

知道MVC中的每个视图都有一个与之关联的对象,称为模型。模型是您喜欢的任何类型的对象,可以通过控制器发送到视图。因此,控制器创建模型的一个实例并将其传递给视图,视图可以使用模型中的数据来查看页面

为此,您首先在视图中声明它使用的模型类型。您应该将这一行放在
.cshtml
文件的顶部

@model MyNamespace.MyModelType
然后在视图中的其他位置,您可以使用
@Model.MyModelPropertyOne
访问模型的属性并使用它们

最后,您应该将
MyModelType
的实例从控制器传递到视图:

using MyWebApplication.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Mydll;

namespace MyWebApplication.Controllers
{
public class HomeController : Controller
{
    myClass myclass= null;
    User user = null;
    public ActionResult Home()
    {
        return View("~/Views/Home/Login.cshtml");
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult CheckUser(User objUser)
    {
        VaultsOnServer vaults = null;
        bool ifUserExist = false;
        if (ModelState.IsValid && InputValidation.onlyLetters(objUser.Username) && InputValidation.checkPassword(objUser.Password))
        {
            if (objUser != null)
            {
                if (myclass== null)
                {
                    myclass= new myClass();
                }

                ifUserExist = mfiles.checkIfLoginAccountExist(objUser.Username);
                if(ifUserExist == true)
                {
                    user = objUser;
                    vaults = myclass.getAllVaults();
                    Session["Vaults"] = vaults;
                }
                return View("~/Views/Home/ChooseVault.cshtml", vaults);
            }
        }
        return View("~/Views/Home/Login.cshtml");
    }

    [HttpPost]
    public ActionResult Login(VaultOnServer vault)
    {
        if(user != null)
        {
            return View();
        }

        return View();
    }
  }
}
return View("Login", new MyModelType());

这是你需要做什么的大纲,如果不清楚,请告诉我,我会尝试解释更多

你可以通过两种方式来做到这一点//第一种更好

1) 在web app中创建另一个类,并将dll类转换为您的web app类,并在视图中以@Emad sayed的形式使用它

public class VaultsOnServerViewModel
{
    //some props
}

return View("~/Views/Home/ChooseVault.cshtml", new VaultsOnServerViewModel(vaults));
2) 通过在视图的webconfig文件夹中添加命名空间,将dll引用添加到视图//请勿执行此操作

<add namespace="Mydll" />

3) 您也可以使用dictionary或SelectListItem来执行此操作

return View("~/Views/Home/ChooseVault.cshtml", vaults.Select(s => new SelectListItem() { Text = s.Name, Value = s.Value}).ToList());
以及

 @model List<SelectListItem>

@foreach (var item in Model)
                {
                    <option value="@item.Value" selected="selected">@item.Text</option>
                }
@型号列表
@foreach(模型中的var项目)
{
@项目.案文
}

或者使用dropdownlistforhelper

“MyNamespace”是指MyWebApplication,而“MyModelType”是指mydll?mydll它不是我的dll,不管怎样,我尝试了你的建议,得到了一条错误消息“找不到类型或名称空间名称‘mydll’(你是否缺少using指令或程序集引用?)
MyNamespace.MyModelType
mydll
中类型的完全限定名。无法转换dll类。你的意思是复制课堂?如果没有,请详细解释。@tal_sshh,您可能不会复制所有dll类,只复制视图中需要的内容。在ChooseSault视图中,您只需要值和名称,也可以使用SelectListItem而无需创建class@tal_sshh,请检查第三种方式。Vault不包含“选择”选项。@tal\u sshh请提供Vault服务器的定义,以及要在“选择”列表中使用的列表显示数据或它们的属性是什么?为什么需要此对象(Vault OnServer)以及其中包含什么?