在MVC中,SelectList派生自MultiSelectList.我不能说出他们之间的区别.对于两者,我必须告诉它选择多个项目(我希望不必这样做,因为名称中有"multi").
如果在下面的代码中用"MultiSelectList"替换"SelectList",它将生成相同的HTML:
<%
var leftSelectList = new SelectList(Model.LeftSide,"Key","Value");
var attrs = new SortedDictionary<string, object> {{"class", "ui-widget"}};
MvcHtmlString disabledStyle = MvcHtmlString.Create(Html.Encode("'width:50px;'"));
attrs.Add("style", disabledStyle);
attrs.Add("multiple", "multiple");
attrs.Add("size", "5"); /*-- how many items to show--*/
var leftItems = Html.DropDownList("ddlLeftItems", leftSelectList, attrs); %>
<%= leftItems.ToHtmlString()%>
Run Code Online (Sandbox Code Playgroud)
生成的HTML是:
<select class="ui-widget" id="ddlLeftItems" multiple="multiple" name="ddlLeftItems" size="5" style="&#39;width:50px;&#39;">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="5">E</option>
<option value="9">I</option>
</select>
Run Code Online (Sandbox Code Playgroud)
那么,我应该使用哪一个?谢谢.
我正在开发asp.net mvc2应用程序,我使用asp.net成员资格提供程序,它使用ASPNETDB.mdf数据库.我也有自己的数据库,现在我想知道如何将这2个数据库上传到服务器?我应该将它们上传为.mdf文件还是应该使用SQL服务器?我更喜欢使用SQL服务器,如果有人知道转换和上传这两个数据库的最短路径,那将对我有很大帮助.
在此先感谢,
Ilija
我有一个简单的动作:
public ActionResult CommentError(string error)
{
return View(error);
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为CommentError.ascx的简单局部视图:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
<%: Model %>
Run Code Online (Sandbox Code Playgroud)
当我通过转到视图直接浏览到myurl.com/find/Comments/CommentError视图显示正常...没有错误.
但是,当我去myurl.com/find/Comments/CommentError?error=SomeErrorString,而不是绑定查询字符串string error,它寻找一个名为的视图SomeErrorString.ascx.
为什么会这样?
编辑
注意,我有一个自定义的global.asax,由我正在使用的路径指示(/ find/Comments/CommentError :::/find/{controler}/{action})
我最近发现TempData在处理控制器中的逻辑后将消息传递回视图.但是当我尝试传递带有消息的html时,它呈现的是实际的标签,而不是在页面呈现时将它们解释为html.
有没有办法解决这个问题,还是我的接近有缺陷?
TempData["Message"] = "<span style='color:red;'>There was a problem moving the files.</span>";
Run Code Online (Sandbox Code Playgroud)
以下是浏览器中显示的内容:
<span style='color:red;'>There was a problem moving the files.</span>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试(没有成功)从服务中获取blob图像并将其显示为html中的图像.
我的HTML是:
<img src="<%: Url.Action("GetPersonImage", new { pid = Model.PersonId }) %>" alt="" />
Run Code Online (Sandbox Code Playgroud)
女巫在Sourceas中表现出来
<img src="/demo4/ABook/GetPersonImage/?pid=210092" alt="">
Run Code Online (Sandbox Code Playgroud)
我的行动是:
public void GetPersonImage(int pid)
{
string src = so.GetPersonImage(pid);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(src);
Response.Clear();
Response.AddHeader("Content-Length", src.Length.ToString());
Response.ContentType = "image/gif";
Response.BufferOutput = false;
Response.BinaryWrite(bytes);
Response.End();
}
Run Code Online (Sandbox Code Playgroud)
如果我访问,这在页面中没有显示任何内容
http://localhost:60556/demo4/ABook/GetPersonImage/?pid=210092
我甚至尝试过 FileStreamResult
public FileStreamResult GetPersonImage(int pid)
{
string src = so.GetPersonImage(pid);
Response.Clear();
Response.Expires = 0;
Response.AddHeader("Content-Length", src.Length.ToString());
Response.BufferOutput = false;
return new FileStreamResult(
new System.IO.MemoryStream(
System.Text.Encoding.UTF8.GetBytes(src)), "image/gif");
}
Run Code Online (Sandbox Code Playgroud)
仍然没有:(
该src变量包含 …
我正在ASP.NET MVC 2中构建一个允许匿名用户和注册用户的站点.当用户登录时,我想在每个页面上显示与该配置文件相关的多条信息(即家乡,喜欢的颜色等).从视角来看,我理解使用母版页并创建局部图来保持干燥.
但是,我遇到的问题是如何将此用户信息传递给每个页面的视图?我已经建立了数据库表之间的关系(我正在使用EF),因此我可以通过ViewData对每个操作进行单独的操作,但这对于网站上的每个页面来说显然都是荒谬的.
到目前为止,我的研究已经开始引领我走上创建其他控制器和视图模型将继承的基本控制器和基本视图模型的道路.但我觉得我错过了一些明显的东西.有什么指针吗?
我被引导到一篇非常好的文章,该文章展示了如何从头到尾创建自定义验证器.我唯一的问题是这只适用于单个字段:http: //haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
如果我需要在模型中验证2个或更多属性,该怎么办?如何将整个模型传递给Validator?
注意:要清楚,我真的不想在回发后验证整个模型......这会破坏这种方法的目的.
我有3个项目文件
webui - controllers and views
framework - service layer and repos
tests- unit tests
Run Code Online (Sandbox Code Playgroud)
所以我看到的是我的控制器只会与我的服务层(包含我的业务逻辑)对话.服务层将与repos通信并获取数据库数据.
我的回购只会说数据库并返回数据.
现在,如果我想进行单元测试,我需要有假的服务层和假存储库.
通过这种方式,我可以隔离地测试控制器和服务层.
那么我在哪里将我的ninject代码放在我的框架类库中,以便我可以将它与我的服务层一起使用?
编辑
史蒂文,你说我应该这样做
//使用mvc扩展在全局aspx中设置ninject
//现在绑定东西
private class SportsStoreServices : NinjectModule
{
public override void Load()
{
Bind<IAdminService>().To<AdminService>();
Bind<IAdminRepo>().To<AdminRepo>();
}
}
Run Code Online (Sandbox Code Playgroud)
//控制器
public class AccountController : Controller
{
//
// GET: /Account/
private IAdminService adminService;
public AccountController(IAdminService adminService)
{
this.adminService = adminService;
}
public ActionResult Login()
{
var getAllAdmins = adminService.GetAllAdmins();
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
//服务层
public class AdminService : IAdminService
{ …Run Code Online (Sandbox Code Playgroud) dependency-injection ninject ioc-container repository-pattern asp.net-mvc-2
对于有经验的正则表达式编写者来说这应该是简单的,但我不会写太多,所以....
我想在C#MVC表单上的文本框上进行输入验证,可能使用javascript或jquery.
我想将输入限制为逗号分隔的整数列表.列表必须以数字> = 0开头,后跟逗号,然后重复此模式.该列表可能以逗号结尾也可能不以逗号结尾:
1,2,444,5, - 通行证
1,2,444,5 - 通过
,1,2,444,5, - 失败
,1,2,444,5 - 失败
1,2,4,4,5,5 - 失败
1,2,4,4,5,5 ,,,失败
我写了这个:^([0-99],?)+$并在regexlib.com测试它似乎工作,但测试人员返回2个匹配,我不知道这意味着什么.由于它在上面的失败案例中失败了,我认为它对于简单的输入验证是安全的.有更好的模式吗?
不太重要的问题:当范围为0-99时,为什么它允许444?
我有以下代码呈现一个名为ExchangeRates.ascx的控件.我想将两个变量传递给control,currencyCode和toCurrencyCode,但我只知道如何传递一个.有人可以帮忙吗?
<% var currencyCode = Html.Encode(Model.Country.CurrencyCode); %>
<% var toCurrencyCode = Html.Encode(Model.Country.toCurrencyCode); %>
<% Html.RenderPartial("~/Views/Shared/ExchangeRates.ascx", currencyCode); %>
Run Code Online (Sandbox Code Playgroud) asp.net-mvc-2 ×10
asp.net-mvc ×4
c# ×3
asp.net ×1
aspnetdb ×1
blob ×1
csv ×1
database ×1
multi-select ×1
ninject ×1
regex ×1
selectlist ×1
sql ×1
validation ×1
view ×1
viewmodel ×1