|
|
I should have probably mentioned that I am using the MVC3 toolkit which has it's own built in account view and controller. I am sure I can dig into the code and add the parts I need as I have access to the tables and the code, I just thought there might be an easier way without using a login control.
|
|
|
|
|
eddieangel wrote: I should have probably mentioned that I am using the MVC3 toolkit
Yes, a fairly significant ommission.
The basic concept is the same though, just different framework.
No comment
|
|
|
|
|
It might have been easier for me to ask if there was a way within the current ASP.net forms authentication model to store the users company name and access that information as needed. I don't need to reinvent the wheel, I just need to see what company the user belongs to when he is viewing data.
|
|
|
|
|
You don't need to reinvent the wheel. Microsoft has done good job of providing for extensibility. The Login control can use templates and the authentication mechanism uses the Provide pattern. Use the template to add your controls and create a Forms Authentication Provider[^] to handle your needs.
No comment
|
|
|
|
|
Question is described by the steps below.
1.Create a new ASP.NET MVC3 Web Application using Internet Application Template.
2.Decorate HomeController class with Authorize.
3.Run the application, It basically takes you http://localhost: 51578/Account/LogOn?ReturnUrl=%2F Everything good so far.
Let’s customize a couple of things in this project.
1.Add an area named “Login” in this solution and move AccountController.cs, AccountModel.cs and whole Account folder under Viewer into appropriate folder under this Area named Login.
2.Run the application now and you will get following error
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: The view 'LogOn' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Account/LogOn.aspx
~/Views/Account/LogOn.ascx
~/Views/Shared/LogOn.aspx
~/Views/Shared/LogOn.ascx
~/Views/Account/LogOn.cshtml
~/Views/Account/LogOn.vbhtml
~/Views/Shared/LogOn.cshtml
~/Views/Shared/LogOn.vbhtml
Do I need to modify anything in the web.config or in routing to make this work?
|
|
|
|
|
I am not sure if you have to change the routing or not, but I know that when I am working with a view outside the scope of the current controller I specify it as a third parameter in the link or redirect.
Ex:
@Html.ActionLink("Back to Claims", "Index", "Claim")
Where arg 1 is the name of the link, arg 2 is the action and arg 3 is the appropriate controller.
Also, if you look at the web.config file there is a forms loginUrl attribute that you can change to point to the correct login page, I imagine.
Cheers, --EA
|
|
|
|
|
I have tried changing the path in web.config for loginUrl attribute but didn't had any luck. It just keep complaining about access issues whenever I direct it outside ~\View folder.
As for @Html.ActionLink, I am not sure where to force it. Because re-direction to Logon page is happening due to fact that I have decorated my HomeController with Authorize attribute and therefore there is no @Html.ActionLink involved.
|
|
|
|
|
I think that from an organizational standpoint the issue is that the top level folder structure should be View - Model - Controller. Build your application and see where it places the account view that you are looking for, whether you put it somewhere else or not in the folder structure for Visual studio, when it compiles up it should end up under the deployed views folder, I think.
I don't know for sure though, look and see where the deployed page lands in the folder structure in relation to the "views" folder, which is considered the "top level" folder for your web pages.
Edit: Check out this link in regards to registering areas. For me it all seems a little over complicated, I prefer the classic Model - View - Controller structure with each of those items having relevant subfolders (Model - Account, View - Account, Controller - Account)
|
|
|
|
|
I am not changing any organizational strucutre.If you follow my instructions from original question, everything is wherever prjoect create by default. All I am doing is that I am creating a new area, but not any custom location. Its wherever VS created by default. The only thing is that its been called by framework itself as I am just applying an attribute and not any Html.XXXX() call.
|
|
|
|
|
I think if you add an area you are going to have to mess around with routes. I don't know because I haven't created any areas, I just use the default View, Model and Controller folders created when you create a project using the MVC3 template in VS2010 without adding an area. To me it is still clean because when you want to generate a controller, you just generate it under the controllers folder. When you generate that controller with scaffolding it creates all of the views in a clean folder under the views folder.
Just me though, if the application is going to get massive and unwieldy, maybe that is a good way to do it, but I haven't read enough about areas to see an appeal.
Sorry I couldn't be more help.
|
|
|
|
|
Hi I am Statrting my carrier as a programmer. At present working with
ASP. Please Advise me for my carrier as a programmer.
|
|
|
|
|
Strong canvas, to hold all those programming guides you need to start reading.
|
|
|
|
|
Search Google with 'getting started asp' and there you go. All the best!
***** Programme comme si dept soutien technique. est plein de tueurs en série et ils savent adresse de votre domicile. *****
|
|
|
|
|
Learning to spell the word Career is a good start.
------------------------------------
I will never again mention that I was the poster of the One Millionth Lounge Post, nor that it was complete drivel. Dalek Dave
CCC Link[ ^]
Trolls[ ^]
|
|
|
|
|
I'm currently programming on ASP.NET 3.5 and started learning about URL routing. I found an article on it here. I went through it and tried to implement it in my site but came across an issue that I can't figure out.
I'm trying to use this for a web store. Right now to see a products details the user would need to go to an address such as /Shopping/ProductDetails.aspx?productID=XXX where 'XXX' is the product GUID from the database. I wanted to make it simpler so a customer could go to /Products/Computer250 and it would bring up a specific product.
I got the routing to work where it would redirect to the correct product page. However on the product details page I have a form view with controls it is to display information like price, description, In Stock/Backordered, etc. After the products information is loaded from the database, I use the following code to set the In Stock/Backordered label:
Dim totalStock As Integer = CInt(ds.Tables(0).Rows(0).Item("TotalStock"))
Dim StockLabel As Label = DirectCast(fvProduct.FindControl("lblStock"), Label)
If totalStock > 0 Then
StockLabel.Text = "In Stock"
StockLabel.ForeColor = Drawing.Color.Green
Else
StockLabel.Text = "Backordered"
StockLabel.ForeColor = Drawing.Color.Red
End If
Now this code work's fine if the customer got to the product's details page if they clicked on a link with the products GUID. When they arrive at the product's details page because of the URL routing, the StockLabel object is nothing and this causes a error.
Why does fvProduct.FindControl return the correct label when the user follows a direct link but when the user gets to the page based on URL routing the fvProduct.FindControl returns nothing?
Any help would be greatly appreciated as I haven't been able to figure this out, or find an answer online. Thanks in advanced for any help you can provide.
|
|
|
|
|
What is fvProduct? is this control placed on current page?
Parwej Ahamad
|
|
|
|
|
It is a form view control.
|
|
|
|
|
I am not sure where is the problem existing. Can you post here code snippet of HTML and Code behind? As per my understanding we can find control only in which state we are like Edit Temple/insert template etc.
So please post Html and C#/VB code in which event you are trying to find.
Parwej Ahamad
|
|
|
|
|
In my Global.asax:
Imports System.Web.Routing
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
RegisterRoutes(RouteTable.Routes)
End Sub
Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.Add("View Product", New Route("Products/{*ProductName}", New ProductRouteHandler()))
End Sub
In a class file ProductRouteHandler :
Imports System.Data.SqlClient
Imports System.Web.Routing
Public Class ProductRouteHandler
Implements IRouteHandler
#Region "Variables"
Dim connectionString As String = ConfigurationManager.ConnectionStrings("SQLMembership").ConnectionString
Dim myConnection As New SqlConnection(connectionString)
#End Region
Public Function GetHttpHandler(ByVal requestContext As System.Web.Routing.RequestContext) As System.Web.IHttpHandler Implements System.Web.Routing.IRouteHandler.GetHttpHandler
Dim productName As String = requestContext.RouteData.Values("ProductName").ToString
If String.IsNullOrEmpty(productName) Then
Return CType(System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/Shopping/PageNotFound.aspx", GetType(Page)), Page)
End If
Dim selectSQL As String = "SELECT ProductID FROM Products WHERE ProductShortName='" & productName & "'"
Dim selectCommand As SqlDataAdapter = New SqlDataAdapter(selectSQL, myConnection)
Dim ds As New DataSet
selectCommand.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
HttpContext.Current.Items("ProductID") = ds.Tables(0).Rows(0).Item("ProductID").ToString
Return CType(System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/Shopping/ProductDetails.aspx", GetType(Page)), Page)
Else
Return CType(System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/Shopping/PageNotFound.aspx", GetType(Page)), Page)
End If
End Function
End Class
Then the section of the web page that is having trouble is in the ProductDetails.aspx page. I have only included the full text of the form view control:
<asp:FormView ID="fvProduct" runat="server" DataKeyNames="ProductID" DataSourceID="ProductDataSource">
<ItemTemplate>
<div id="ContentHead" class="ContentHead" runat="server">
<%#Eval("ProductName")%></div>
<br />
<table style="border: 0px;">
<tr>
<td style="vertical-align: top;">
<section>
<div id="section_articleOneIdentifier">
</div>
<article id="article_one">
<div id="gallery">
<asp:PlaceHolder ID="ImageLightBox" runat="server" />
</div>
</article>
</section>
<%-- <img src=
alt=
</td>
<td style="vertical-align: top;">
<%#Eval("ProductLongDescription")%>
<br />
</td>
</tr>
</table>
<div style="padding-left: 250px; text-align: right">
Your Price: <%#Eval("ProductPrice", "{0:c}")%>
<br />
</div>
<div style="padding-left: 400px; text-align: right;">
<input type="number" id="itemCount" value="1" min="1" max="999" required="true" onblur="checkItemCount();"
onchange="revertColors();" />
<br />
<a style="border: 0 none white" onmouseover="setCursorPointer();" onmouseout="setCursorNormal();">
<img id="imgAddToCart" src="Images/AddToCart.png" runat="server" alt="Add To Cart"
style="border-width: 0" onclick="process();" /></a>
<div style="vertical-align:top;text-align:right;padding-right:10px;">
<asp:Label ID="lblStock" runat="server" Font-Size="10px" Font-Bold="true" Text="" />
</div>
<br />
<br />
</div>
</ItemTemplate>
</asp:FormView>
And in the code behind of ProductDetails.aspx that is causing the error is:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If String.IsNullOrEmpty(Request.QueryString("productID")) Then
productID = CType(HttpContext.Current.Items("ProductID"), String)
Else
productID = Request.QueryString("productID")
End If
DetermineStock()
CreateLightBox()
End Sub
Private Sub DetermineStock()
Dim selectSQL As String = "SELECT TotalStock FROM Products WHERE ProductID='" & productID & "'"
Dim selectCommand As SqlDataAdapter = New SqlDataAdapter(selectSQL, myConnection)
Dim ds As New DataSet
selectCommand.Fill(ds)
Dim totalStock As Integer = CInt(ds.Tables(0).Rows(0).Item("TotalStock"))
Dim StockLabel As Label = DirectCast(fvProduct.FindControl("lblStock"), Label)
If totalStock > 0 Then
StockLabel.Text = "In Stock"
StockLabel.ForeColor = Drawing.Color.Green
Else
StockLabel.Text = "Backordered"
StockLabel.ForeColor = Drawing.Color.Red
End If
End Sub
In the user arrives at this page using the direct link www.mywebsite.com/Shopping/ProductDetails.aspx?id=ProductID then everything works fine. However if they come to this page from the routing class by visiting a page such as www.mywebsite.com/Products/ProductName then in the DetermineStock method, the line that finds the control lblStock returns nothing and therefore I cannot set the text or color of the label. However, if they follow the direct link that has the product id (and therefore the routing class was not used) the same line that finds the control lblStock in the form view returns the correct control and I can set the text and color appropriately.
|
|
|
|
|
|
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="QueryStringModule" type="QueryStringModule"/>
<add name="UrlRoutingModul" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
...
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
...
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
</system.webServer>
|
|
|
|
|
I'm using Asp.net 3.5 on Godaddy, and I need a way for users to upload large files using Asp.net FileUpload Control, I don't want to use a third party
I've changed the value of maxRequestLength in web.config as follows:
<httpRuntime executionTimeout="1100" maxRequestLength="512000" />
but when uploding a file of about 32 MB, upload process goes well (I can see percentage for the process in the down-left corner of Chrome browser), but after a while, the process restarts !! and after going with upload for a while page crashes without errors (just telling me that page cannot be displayed)
The same happens on IE (but of course without percentage)
Please help me to solve this issue without third party
|
|
|
|
|
It may helps you
string filename = fuUploadVideo.FileName;
string path = Server.MapPath("Uploads4");
string strFinalFileName = Path.GetFileName(fuUploadVideo.FileName);
long FileLength = fuUploadVideo.PostedFile.ContentLength;
long uploadchunklimit;
int SizeLimit = (int)FileLength;
if (FileLength <= 1024)
{
uploadchunklimit = 1;
SizeLimit = (int)FileLength;
}
else if (FileLength > 1024)
{
uploadchunklimit = FileLength / 1024;
SizeLimit = 10;
}
else if (FileLength <= 10240 && FileLength > 1024)
{
uploadchunklimit = FileLength / 1024;
}
else
{
uploadchunklimit = FileLength / 1024;
}
long lngSize = (long)SizeLimit;
lngSize = 1024 * 1024;
string ext = Path.GetExtension(fuUploadVideo.PostedFile.FileName);
fuUploadVideo.PostedFile.SaveAs(Server.MapPath("~\\Uploads4\\" + filename));
|
|
|
|
|
Thank you for your reply, but I don't understand how this code helps me
|
|
|
|