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



我不确定标题是否适合写,但我认为没有更好的标题。

经过多次搜索,我没有找到解决方案。

我是 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();
}
}
}

观点:

@{
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>
}

在控制器中,我发送了函数 CheckUser 以查看 dll(Mydll( 中类类型的对象,我想在视图中与类类型一起使用。

我能做到吗?

谢谢

您可以通过 2 种方式做到这一点//首先更好

1(在Web应用程序中创建另一个类,并将dll类转换为Web应用程序类,并按照@Emad所述在视图中使用它

public class VaultsOnServerViewModel
{
//some props
}
return View("~/Views/Home/ChooseVault.cshtml", new VaultsOnServerViewModel(vaults));

2(通过在视图文件夹的Web配置中添加命名空间来添加DLL引用到视图//不要这样做

<add namespace="Mydll" />

然后您就可以在视图中使用

@model Mydll.VaultsOnServer

@foreach (var item in Model)

3(您也可以使用字典或选择列表项来执行此操作

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>
}

或使用下拉列表为帮助程序

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

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

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

@model MyNamespace.MyModelType

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

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

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

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

最新更新